diff --git a/.history/lang/en_20241207230434.json b/.history/lang/en_20241207230434.json new file mode 100644 index 0000000..863d0b9 --- /dev/null +++ b/.history/lang/en_20241207230434.json @@ -0,0 +1,445 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160041.json b/.history/lang/en_20241208160041.json new file mode 100644 index 0000000..cdd10fa --- /dev/null +++ b/.history/lang/en_20241208160041.json @@ -0,0 +1,446 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": {} + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160046.json b/.history/lang/en_20241208160046.json new file mode 100644 index 0000000..1e008b6 --- /dev/null +++ b/.history/lang/en_20241208160046.json @@ -0,0 +1,448 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade" + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160049.json b/.history/lang/en_20241208160049.json new file mode 100644 index 0000000..e488d9b --- /dev/null +++ b/.history/lang/en_20241208160049.json @@ -0,0 +1,450 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160052.json b/.history/lang/en_20241208160052.json new file mode 100644 index 0000000..c9314f3 --- /dev/null +++ b/.history/lang/en_20241208160052.json @@ -0,0 +1,450 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "medi" + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160053.json b/.history/lang/en_20241208160053.json new file mode 100644 index 0000000..322bcee --- /dev/null +++ b/.history/lang/en_20241208160053.json @@ -0,0 +1,451 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "medium + " + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160057.json b/.history/lang/en_20241208160057.json new file mode 100644 index 0000000..daf9d24 --- /dev/null +++ b/.history/lang/en_20241208160057.json @@ -0,0 +1,450 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "medium " + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160100.json b/.history/lang/en_20241208160100.json new file mode 100644 index 0000000..5dc09f5 --- /dev/null +++ b/.history/lang/en_20241208160100.json @@ -0,0 +1,450 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "medium + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160103.json b/.history/lang/en_20241208160103.json new file mode 100644 index 0000000..733af16 --- /dev/null +++ b/.history/lang/en_20241208160103.json @@ -0,0 +1,451 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160120.json b/.history/lang/en_20241208160120.json new file mode 100644 index 0000000..04c325e --- /dev/null +++ b/.history/lang/en_20241208160120.json @@ -0,0 +1,453 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "mace": "Mace", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160121.json b/.history/lang/en_20241208160121.json new file mode 100644 index 0000000..7bd2cd6 --- /dev/null +++ b/.history/lang/en_20241208160121.json @@ -0,0 +1,453 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "mace": "Mace", + "spear": "Spear", + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160127.json b/.history/lang/en_20241208160127.json new file mode 100644 index 0000000..eca4650 --- /dev/null +++ b/.history/lang/en_20241208160127.json @@ -0,0 +1,454 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "mace": "Mace", + "hammer": "Hammer", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160131.json b/.history/lang/en_20241208160131.json new file mode 100644 index 0000000..c6b5766 --- /dev/null +++ b/.history/lang/en_20241208160131.json @@ -0,0 +1,453 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160132.json b/.history/lang/en_20241208160132.json new file mode 100644 index 0000000..33ae1d7 --- /dev/null +++ b/.history/lang/en_20241208160132.json @@ -0,0 +1,454 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160135.json b/.history/lang/en_20241208160135.json new file mode 100644 index 0000000..9dc26ca --- /dev/null +++ b/.history/lang/en_20241208160135.json @@ -0,0 +1,454 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "pole" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160138.json b/.history/lang/en_20241208160138.json new file mode 100644 index 0000000..a0ca72f --- /dev/null +++ b/.history/lang/en_20241208160138.json @@ -0,0 +1,455 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160139.json b/.history/lang/en_20241208160139.json new file mode 100644 index 0000000..186b955 --- /dev/null +++ b/.history/lang/en_20241208160139.json @@ -0,0 +1,455 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "spear": "Spear", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160141.json b/.history/lang/en_20241208160141.json new file mode 100644 index 0000000..ce5996e --- /dev/null +++ b/.history/lang/en_20241208160141.json @@ -0,0 +1,454 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160144.json b/.history/lang/en_20241208160144.json new file mode 100644 index 0000000..f0e81b6 --- /dev/null +++ b/.history/lang/en_20241208160144.json @@ -0,0 +1,455 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + },r + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "th" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160146.json b/.history/lang/en_20241208160146.json new file mode 100644 index 0000000..2e1f576 --- /dev/null +++ b/.history/lang/en_20241208160146.json @@ -0,0 +1,455 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "th" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160149.json b/.history/lang/en_20241208160149.json new file mode 100644 index 0000000..48ea549 --- /dev/null +++ b/.history/lang/en_20241208160149.json @@ -0,0 +1,455 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thr" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160155.json b/.history/lang/en_20241208160155.json new file mode 100644 index 0000000..13d6f31 --- /dev/null +++ b/.history/lang/en_20241208160155.json @@ -0,0 +1,457 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160156.json b/.history/lang/en_20241208160156.json new file mode 100644 index 0000000..015b909 --- /dev/null +++ b/.history/lang/en_20241208160156.json @@ -0,0 +1,457 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "crossbow": "Crossbow", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160219.json b/.history/lang/en_20241208160219.json new file mode 100644 index 0000000..31ad5a5 --- /dev/null +++ b/.history/lang/en_20241208160219.json @@ -0,0 +1,456 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160226.json b/.history/lang/en_20241208160226.json new file mode 100644 index 0000000..a64d24c --- /dev/null +++ b/.history/lang/en_20241208160226.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160227.json b/.history/lang/en_20241208160227.json new file mode 100644 index 0000000..dfa9b96 --- /dev/null +++ b/.history/lang/en_20241208160227.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "slashing" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160230.json b/.history/lang/en_20241208160230.json new file mode 100644 index 0000000..a64d24c --- /dev/null +++ b/.history/lang/en_20241208160230.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160232.json b/.history/lang/en_20241208160232.json new file mode 100644 index 0000000..2721cee --- /dev/null +++ b/.history/lang/en_20241208160232.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160233.json b/.history/lang/en_20241208160233.json new file mode 100644 index 0000000..13e973a --- /dev/null +++ b/.history/lang/en_20241208160233.json @@ -0,0 +1,459 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160246.json b/.history/lang/en_20241208160246.json new file mode 100644 index 0000000..d14c088 --- /dev/null +++ b/.history/lang/en_20241208160246.json @@ -0,0 +1,459 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160248.json b/.history/lang/en_20241208160248.json new file mode 100644 index 0000000..2533dbc --- /dev/null +++ b/.history/lang/en_20241208160248.json @@ -0,0 +1,459 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unar" + + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160250.json b/.history/lang/en_20241208160250.json new file mode 100644 index 0000000..45ad341 --- /dev/null +++ b/.history/lang/en_20241208160250.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed" + } + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160251.json b/.history/lang/en_20241208160251.json new file mode 100644 index 0000000..2fde51e --- /dev/null +++ b/.history/lang/en_20241208160251.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160252.json b/.history/lang/en_20241208160252.json new file mode 100644 index 0000000..2fde51e --- /dev/null +++ b/.history/lang/en_20241208160252.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160253.json b/.history/lang/en_20241208160253.json new file mode 100644 index 0000000..2fde51e --- /dev/null +++ b/.history/lang/en_20241208160253.json @@ -0,0 +1,458 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160327.json b/.history/lang/en_20241208160327.json new file mode 100644 index 0000000..b38b41a --- /dev/null +++ b/.history/lang/en_20241208160327.json @@ -0,0 +1,459 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160338.json b/.history/lang/en_20241208160338.json new file mode 100644 index 0000000..e2188f8 --- /dev/null +++ b/.history/lang/en_20241208160338.json @@ -0,0 +1,460 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "wea" + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160339.json b/.history/lang/en_20241208160339.json new file mode 100644 index 0000000..43367a9 --- /dev/null +++ b/.history/lang/en_20241208160339.json @@ -0,0 +1,462 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208160340.json b/.history/lang/en_20241208160340.json new file mode 100644 index 0000000..43367a9 --- /dev/null +++ b/.history/lang/en_20241208160340.json @@ -0,0 +1,462 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201739.json b/.history/lang/en_20241208201739.json new file mode 100644 index 0000000..0f9c018 --- /dev/null +++ b/.history/lang/en_20241208201739.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "label": "Bonus" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201743.json b/.history/lang/en_20241208201743.json new file mode 100644 index 0000000..fb5addc --- /dev/null +++ b/.history/lang/en_20241208201743.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201747.json b/.history/lang/en_20241208201747.json new file mode 100644 index 0000000..4e29f68 --- /dev/null +++ b/.history/lang/en_20241208201747.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201748.json b/.history/lang/en_20241208201748.json new file mode 100644 index 0000000..4e29f68 --- /dev/null +++ b/.history/lang/en_20241208201748.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201750.json b/.history/lang/en_20241208201750.json new file mode 100644 index 0000000..5e56180 --- /dev/null +++ b/.history/lang/en_20241208201750.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201752.json b/.history/lang/en_20241208201752.json new file mode 100644 index 0000000..1a3715d --- /dev/null +++ b/.history/lang/en_20241208201752.json @@ -0,0 +1,465 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201758.json b/.history/lang/en_20241208201758.json new file mode 100644 index 0000000..0a87e89 --- /dev/null +++ b/.history/lang/en_20241208201758.json @@ -0,0 +1,467 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201759.json b/.history/lang/en_20241208201759.json new file mode 100644 index 0000000..9b0d18a --- /dev/null +++ b/.history/lang/en_20241208201759.json @@ -0,0 +1,467 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201801.json b/.history/lang/en_20241208201801.json new file mode 100644 index 0000000..9316372 --- /dev/null +++ b/.history/lang/en_20241208201801.json @@ -0,0 +1,468 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201802.json b/.history/lang/en_20241208201802.json new file mode 100644 index 0000000..4659fc6 --- /dev/null +++ b/.history/lang/en_20241208201802.json @@ -0,0 +1,470 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201804.json b/.history/lang/en_20241208201804.json new file mode 100644 index 0000000..4659fc6 --- /dev/null +++ b/.history/lang/en_20241208201804.json @@ -0,0 +1,470 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201805.json b/.history/lang/en_20241208201805.json new file mode 100644 index 0000000..d89bef2 --- /dev/null +++ b/.history/lang/en_20241208201805.json @@ -0,0 +1,471 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + }, + + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201806.json b/.history/lang/en_20241208201806.json new file mode 100644 index 0000000..9bdfd02 --- /dev/null +++ b/.history/lang/en_20241208201806.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201808.json b/.history/lang/en_20241208201808.json new file mode 100644 index 0000000..9bdfd02 --- /dev/null +++ b/.history/lang/en_20241208201808.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201809.json b/.history/lang/en_20241208201809.json new file mode 100644 index 0000000..9bdfd02 --- /dev/null +++ b/.history/lang/en_20241208201809.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201810.json b/.history/lang/en_20241208201810.json new file mode 100644 index 0000000..9bdfd02 --- /dev/null +++ b/.history/lang/en_20241208201810.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack" + }, + "damage": { + "label": "Damage" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201814.json b/.history/lang/en_20241208201814.json new file mode 100644 index 0000000..f825a9d --- /dev/null +++ b/.history/lang/en_20241208201814.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201817.json b/.history/lang/en_20241208201817.json new file mode 100644 index 0000000..a0f5516 --- /dev/null +++ b/.history/lang/en_20241208201817.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonyus" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201818.json b/.history/lang/en_20241208201818.json new file mode 100644 index 0000000..4b7f853 --- /dev/null +++ b/.history/lang/en_20241208201818.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201821.json b/.history/lang/en_20241208201821.json new file mode 100644 index 0000000..1de6779 --- /dev/null +++ b/.history/lang/en_20241208201821.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bon,us" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201823.json b/.history/lang/en_20241208201823.json new file mode 100644 index 0000000..3ea4605 --- /dev/null +++ b/.history/lang/en_20241208201823.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201824.json b/.history/lang/en_20241208201824.json new file mode 100644 index 0000000..3ea4605 --- /dev/null +++ b/.history/lang/en_20241208201824.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208201825.json b/.history/lang/en_20241208201825.json new file mode 100644 index 0000000..3ea4605 --- /dev/null +++ b/.history/lang/en_20241208201825.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208204159.json b/.history/lang/en_20241208204159.json new file mode 100644 index 0000000..b38b41a --- /dev/null +++ b/.history/lang/en_20241208204159.json @@ -0,0 +1,459 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208204228.json b/.history/lang/en_20241208204228.json new file mode 100644 index 0000000..e153190 --- /dev/null +++ b/.history/lang/en_20241208204228.json @@ -0,0 +1,474 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208204229.json b/.history/lang/en_20241208204229.json new file mode 100644 index 0000000..e671217 --- /dev/null +++ b/.history/lang/en_20241208204229.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208204230.json b/.history/lang/en_20241208204230.json new file mode 100644 index 0000000..e671217 --- /dev/null +++ b/.history/lang/en_20241208204230.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241208204231.json b/.history/lang/en_20241208204231.json new file mode 100644 index 0000000..e671217 --- /dev/null +++ b/.history/lang/en_20241208204231.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151421.json b/.history/lang/en_20241209151421.json new file mode 100644 index 0000000..e671217 --- /dev/null +++ b/.history/lang/en_20241209151421.json @@ -0,0 +1,473 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151424.json b/.history/lang/en_20241209151424.json new file mode 100644 index 0000000..76bb9d8 --- /dev/null +++ b/.history/lang/en_20241209151424.json @@ -0,0 +1,474 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151430.json b/.history/lang/en_20241209151430.json new file mode 100644 index 0000000..44a131b --- /dev/null +++ b/.history/lang/en_20241209151430.json @@ -0,0 +1,474 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151434.json b/.history/lang/en_20241209151434.json new file mode 100644 index 0000000..ff5ae2f --- /dev/null +++ b/.history/lang/en_20241209151434.json @@ -0,0 +1,475 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "" + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151441.json b/.history/lang/en_20241209151441.json new file mode 100644 index 0000000..579c60f --- /dev/null +++ b/.history/lang/en_20241209151441.json @@ -0,0 +1,477 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + + } + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151444.json b/.history/lang/en_20241209151444.json new file mode 100644 index 0000000..f543b2c --- /dev/null +++ b/.history/lang/en_20241209151444.json @@ -0,0 +1,477 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151445.json b/.history/lang/en_20241209151445.json new file mode 100644 index 0000000..83fd115 --- /dev/null +++ b/.history/lang/en_20241209151445.json @@ -0,0 +1,484 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151453.json b/.history/lang/en_20241209151453.json new file mode 100644 index 0000000..83fd115 --- /dev/null +++ b/.history/lang/en_20241209151453.json @@ -0,0 +1,484 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151510.json b/.history/lang/en_20241209151510.json new file mode 100644 index 0000000..83fd115 --- /dev/null +++ b/.history/lang/en_20241209151510.json @@ -0,0 +1,484 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151520.json b/.history/lang/en_20241209151520.json new file mode 100644 index 0000000..afe5b61 --- /dev/null +++ b/.history/lang/en_20241209151520.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151521.json b/.history/lang/en_20241209151521.json new file mode 100644 index 0000000..afe5b61 --- /dev/null +++ b/.history/lang/en_20241209151521.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151526.json b/.history/lang/en_20241209151526.json new file mode 100644 index 0000000..06842c2 --- /dev/null +++ b/.history/lang/en_20241209151526.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151527.json b/.history/lang/en_20241209151527.json new file mode 100644 index 0000000..fb063c9 --- /dev/null +++ b/.history/lang/en_20241209151527.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151529.json b/.history/lang/en_20241209151529.json new file mode 100644 index 0000000..9b466f1 --- /dev/null +++ b/.history/lang/en_20241209151529.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalust": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151531.json b/.history/lang/en_20241209151531.json new file mode 100644 index 0000000..e7f6304 --- /dev/null +++ b/.history/lang/en_20241209151531.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151534.json b/.history/lang/en_20241209151534.json new file mode 100644 index 0000000..3704322 --- /dev/null +++ b/.history/lang/en_20241209151534.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151535.json b/.history/lang/en_20241209151535.json new file mode 100644 index 0000000..edaed72 --- /dev/null +++ b/.history/lang/en_20241209151535.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151537.json b/.history/lang/en_20241209151537.json new file mode 100644 index 0000000..9e4c1d7 --- /dev/null +++ b/.history/lang/en_20241209151537.json @@ -0,0 +1,520 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151539.json b/.history/lang/en_20241209151539.json new file mode 100644 index 0000000..9f386ba --- /dev/null +++ b/.history/lang/en_20241209151539.json @@ -0,0 +1,520 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "" + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151546.json b/.history/lang/en_20241209151546.json new file mode 100644 index 0000000..bfe5742 --- /dev/null +++ b/.history/lang/en_20241209151546.json @@ -0,0 +1,522 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151547.json b/.history/lang/en_20241209151547.json new file mode 100644 index 0000000..bfe5742 --- /dev/null +++ b/.history/lang/en_20241209151547.json @@ -0,0 +1,522 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151551.json b/.history/lang/en_20241209151551.json new file mode 100644 index 0000000..e7f10b3 --- /dev/null +++ b/.history/lang/en_20241209151551.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151554.json b/.history/lang/en_20241209151554.json new file mode 100644 index 0000000..c4c8d96 --- /dev/null +++ b/.history/lang/en_20241209151554.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151556.json b/.history/lang/en_20241209151556.json new file mode 100644 index 0000000..1c824d2 --- /dev/null +++ b/.history/lang/en_20241209151556.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151557.json b/.history/lang/en_20241209151557.json new file mode 100644 index 0000000..1c824d2 --- /dev/null +++ b/.history/lang/en_20241209151557.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151602.json b/.history/lang/en_20241209151602.json new file mode 100644 index 0000000..635cd73 --- /dev/null +++ b/.history/lang/en_20241209151602.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151604.json b/.history/lang/en_20241209151604.json new file mode 100644 index 0000000..1c824d2 --- /dev/null +++ b/.history/lang/en_20241209151604.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151607.json b/.history/lang/en_20241209151607.json new file mode 100644 index 0000000..18fa9d1 --- /dev/null +++ b/.history/lang/en_20241209151607.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151643.json b/.history/lang/en_20241209151643.json new file mode 100644 index 0000000..40bf4b7 --- /dev/null +++ b/.history/lang/en_20241209151643.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "range": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151656.json b/.history/lang/en_20241209151656.json new file mode 100644 index 0000000..c061d72 --- /dev/null +++ b/.history/lang/en_20241209151656.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151657.json b/.history/lang/en_20241209151657.json new file mode 100644 index 0000000..c061d72 --- /dev/null +++ b/.history/lang/en_20241209151657.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209151658.json b/.history/lang/en_20241209151658.json new file mode 100644 index 0000000..c061d72 --- /dev/null +++ b/.history/lang/en_20241209151658.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209231413.json b/.history/lang/en_20241209231413.json new file mode 100644 index 0000000..c061d72 --- /dev/null +++ b/.history/lang/en_20241209231413.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241209231449.json b/.history/lang/en_20241209231449.json new file mode 100644 index 0000000..c061d72 --- /dev/null +++ b/.history/lang/en_20241209231449.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armortype": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071126.json b/.history/lang/en_20241210071126.json new file mode 100644 index 0000000..4c53954 --- /dev/null +++ b/.history/lang/en_20241210071126.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071129.json b/.history/lang/en_20241210071129.json new file mode 100644 index 0000000..4308a4f --- /dev/null +++ b/.history/lang/en_20241210071129.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "movementeduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071134.json b/.history/lang/en_20241210071134.json new file mode 100644 index 0000000..0127dba --- /dev/null +++ b/.history/lang/en_20241210071134.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071137.json b/.history/lang/en_20241210071137.json new file mode 100644 index 0000000..232e609 --- /dev/null +++ b/.history/lang/en_20241210071137.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071142.json b/.history/lang/en_20241210071142.json new file mode 100644 index 0000000..956caaf --- /dev/null +++ b/.history/lang/en_20241210071142.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071907.json b/.history/lang/en_20241210071907.json new file mode 100644 index 0000000..97cf41b --- /dev/null +++ b/.history/lang/en_20241210071907.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071913.json b/.history/lang/en_20241210071913.json new file mode 100644 index 0000000..9de8ff4 --- /dev/null +++ b/.history/lang/en_20241210071913.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "load": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071929.json b/.history/lang/en_20241210071929.json new file mode 100644 index 0000000..0ff190e --- /dev/null +++ b/.history/lang/en_20241210071929.json @@ -0,0 +1,516 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071939.json b/.history/lang/en_20241210071939.json new file mode 100644 index 0000000..99aa283 --- /dev/null +++ b/.history/lang/en_20241210071939.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071942.json b/.history/lang/en_20241210071942.json new file mode 100644 index 0000000..6cf6725 --- /dev/null +++ b/.history/lang/en_20241210071942.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "enLoadc": { + "label": "Cost" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071944.json b/.history/lang/en_20241210071944.json new file mode 100644 index 0000000..b8d9a0b --- /dev/null +++ b/.history/lang/en_20241210071944.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "enLoadc": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071946.json b/.history/lang/en_20241210071946.json new file mode 100644 index 0000000..a082286 --- /dev/null +++ b/.history/lang/en_20241210071946.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "enLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210071949.json b/.history/lang/en_20241210071949.json new file mode 100644 index 0000000..895df96 --- /dev/null +++ b/.history/lang/en_20241210071949.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210072002.json b/.history/lang/en_20241210072002.json new file mode 100644 index 0000000..895df96 --- /dev/null +++ b/.history/lang/en_20241210072002.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075355.json b/.history/lang/en_20241210075355.json new file mode 100644 index 0000000..e7536f3 --- /dev/null +++ b/.history/lang/en_20241210075355.json @@ -0,0 +1,519 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075359.json b/.history/lang/en_20241210075359.json new file mode 100644 index 0000000..bc77739 --- /dev/null +++ b/.history/lang/en_20241210075359.json @@ -0,0 +1,520 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + + }, + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075404.json b/.history/lang/en_20241210075404.json new file mode 100644 index 0000000..5f8c520 --- /dev/null +++ b/.history/lang/en_20241210075404.json @@ -0,0 +1,520 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves" + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075406.json b/.history/lang/en_20241210075406.json new file mode 100644 index 0000000..2e00c40 --- /dev/null +++ b/.history/lang/en_20241210075406.json @@ -0,0 +1,522 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075454.json b/.history/lang/en_20241210075454.json new file mode 100644 index 0000000..dbda176 --- /dev/null +++ b/.history/lang/en_20241210075454.json @@ -0,0 +1,522 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075457.json b/.history/lang/en_20241210075457.json new file mode 100644 index 0000000..11d9b82 --- /dev/null +++ b/.history/lang/en_20241210075457.json @@ -0,0 +1,524 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075501.json b/.history/lang/en_20241210075501.json new file mode 100644 index 0000000..c773a4a --- /dev/null +++ b/.history/lang/en_20241210075501.json @@ -0,0 +1,525 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075503.json b/.history/lang/en_20241210075503.json new file mode 100644 index 0000000..0ff51f3 --- /dev/null +++ b/.history/lang/en_20241210075503.json @@ -0,0 +1,525 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075507.json b/.history/lang/en_20241210075507.json new file mode 100644 index 0000000..adf7cb2 --- /dev/null +++ b/.history/lang/en_20241210075507.json @@ -0,0 +1,527 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075512.json b/.history/lang/en_20241210075512.json new file mode 100644 index 0000000..a7a3e84 --- /dev/null +++ b/.history/lang/en_20241210075512.json @@ -0,0 +1,528 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075515.json b/.history/lang/en_20241210075515.json new file mode 100644 index 0000000..bf07c08 --- /dev/null +++ b/.history/lang/en_20241210075515.json @@ -0,0 +1,528 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "tough" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075516.json b/.history/lang/en_20241210075516.json new file mode 100644 index 0000000..5311715 --- /dev/null +++ b/.history/lang/en_20241210075516.json @@ -0,0 +1,530 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075524.json b/.history/lang/en_20241210075524.json new file mode 100644 index 0000000..b2f639f --- /dev/null +++ b/.history/lang/en_20241210075524.json @@ -0,0 +1,533 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075531.json b/.history/lang/en_20241210075531.json new file mode 100644 index 0000000..cbf43d4 --- /dev/null +++ b/.history/lang/en_20241210075531.json @@ -0,0 +1,537 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075536.json b/.history/lang/en_20241210075536.json new file mode 100644 index 0000000..1b02302 --- /dev/null +++ b/.history/lang/en_20241210075536.json @@ -0,0 +1,539 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain":! { + "label": "Pain" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075537.json b/.history/lang/en_20241210075537.json new file mode 100644 index 0000000..3ee62a7 --- /dev/null +++ b/.history/lang/en_20241210075537.json @@ -0,0 +1,539 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075538.json b/.history/lang/en_20241210075538.json new file mode 100644 index 0000000..d9606a1 --- /dev/null +++ b/.history/lang/en_20241210075538.json @@ -0,0 +1,539 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075545.json b/.history/lang/en_20241210075545.json new file mode 100644 index 0000000..4888a82 --- /dev/null +++ b/.history/lang/en_20241210075545.json @@ -0,0 +1,542 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075548.json b/.history/lang/en_20241210075548.json new file mode 100644 index 0000000..1cb917f --- /dev/null +++ b/.history/lang/en_20241210075548.json @@ -0,0 +1,542 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075549.json b/.history/lang/en_20241210075549.json new file mode 100644 index 0000000..1cb917f --- /dev/null +++ b/.history/lang/en_20241210075549.json @@ -0,0 +1,542 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075551.json b/.history/lang/en_20241210075551.json new file mode 100644 index 0000000..1cb917f --- /dev/null +++ b/.history/lang/en_20241210075551.json @@ -0,0 +1,542 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075553.json b/.history/lang/en_20241210075553.json new file mode 100644 index 0000000..9f48b42 --- /dev/null +++ b/.history/lang/en_20241210075553.json @@ -0,0 +1,545 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075559.json b/.history/lang/en_20241210075559.json new file mode 100644 index 0000000..a0c95ab --- /dev/null +++ b/.history/lang/en_20241210075559.json @@ -0,0 +1,545 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agi" + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075601.json b/.history/lang/en_20241210075601.json new file mode 100644 index 0000000..93eeff5 --- /dev/null +++ b/.history/lang/en_20241210075601.json @@ -0,0 +1,547 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075603.json b/.history/lang/en_20241210075603.json new file mode 100644 index 0000000..b5c53c7 --- /dev/null +++ b/.history/lang/en_20241210075603.json @@ -0,0 +1,547 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "strength": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075604.json b/.history/lang/en_20241210075604.json new file mode 100644 index 0000000..93eeff5 --- /dev/null +++ b/.history/lang/en_20241210075604.json @@ -0,0 +1,547 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075624.json b/.history/lang/en_20241210075624.json new file mode 100644 index 0000000..430f6af --- /dev/null +++ b/.history/lang/en_20241210075624.json @@ -0,0 +1,550 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + }, + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210075625.json b/.history/lang/en_20241210075625.json new file mode 100644 index 0000000..035ed9d --- /dev/null +++ b/.history/lang/en_20241210075625.json @@ -0,0 +1,550 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172550.json b/.history/lang/en_20241210172550.json new file mode 100644 index 0000000..422a751 --- /dev/null +++ b/.history/lang/en_20241210172550.json @@ -0,0 +1,553 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172555.json b/.history/lang/en_20241210172555.json new file mode 100644 index 0000000..fd0e585 --- /dev/null +++ b/.history/lang/en_20241210172555.json @@ -0,0 +1,554 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172559.json b/.history/lang/en_20241210172559.json new file mode 100644 index 0000000..cf1a7ef --- /dev/null +++ b/.history/lang/en_20241210172559.json @@ -0,0 +1,554 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped" + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172601.json b/.history/lang/en_20241210172601.json new file mode 100644 index 0000000..cf1a7ef --- /dev/null +++ b/.history/lang/en_20241210172601.json @@ -0,0 +1,554 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped" + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172604.json b/.history/lang/en_20241210172604.json new file mode 100644 index 0000000..6ee7f52 --- /dev/null +++ b/.history/lang/en_20241210172604.json @@ -0,0 +1,556 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172615.json b/.history/lang/en_20241210172615.json new file mode 100644 index 0000000..a0f8143 --- /dev/null +++ b/.history/lang/en_20241210172615.json @@ -0,0 +1,559 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isField": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172745.json b/.history/lang/en_20241210172745.json new file mode 100644 index 0000000..5ec25e1 --- /dev/null +++ b/.history/lang/en_20241210172745.json @@ -0,0 +1,560 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isField": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172747.json b/.history/lang/en_20241210172747.json new file mode 100644 index 0000000..f7dbc8f --- /dev/null +++ b/.history/lang/en_20241210172747.json @@ -0,0 +1,560 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isField": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped" + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210172748.json b/.history/lang/en_20241210172748.json new file mode 100644 index 0000000..69136bf --- /dev/null +++ b/.history/lang/en_20241210172748.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isField": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210173415.json b/.history/lang/en_20241210173415.json new file mode 100644 index 0000000..ab5c452 --- /dev/null +++ b/.history/lang/en_20241210173415.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isHelmet": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210173416.json b/.history/lang/en_20241210173416.json new file mode 100644 index 0000000..ab5c452 --- /dev/null +++ b/.history/lang/en_20241210173416.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isHelmet": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210173417.json b/.history/lang/en_20241210173417.json new file mode 100644 index 0000000..ab5c452 --- /dev/null +++ b/.history/lang/en_20241210173417.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isHelmet": { + "label": "Field" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210173955.json b/.history/lang/en_20241210173955.json new file mode 100644 index 0000000..cc8cd66 --- /dev/null +++ b/.history/lang/en_20241210173955.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210173957.json b/.history/lang/en_20241210173957.json new file mode 100644 index 0000000..3de42d3 --- /dev/null +++ b/.history/lang/en_20241210173957.json @@ -0,0 +1,562 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210205431.json b/.history/lang/en_20241210205431.json new file mode 100644 index 0000000..eb88247 --- /dev/null +++ b/.history/lang/en_20241210205431.json @@ -0,0 +1,563 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "saves" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210205433.json b/.history/lang/en_20241210205433.json new file mode 100644 index 0000000..7211540 --- /dev/null +++ b/.history/lang/en_20241210205433.json @@ -0,0 +1,565 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "saves": { + + } + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210205434.json b/.history/lang/en_20241210205434.json new file mode 100644 index 0000000..2d27e0b --- /dev/null +++ b/.history/lang/en_20241210205434.json @@ -0,0 +1,565 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "saves": { + "will" + } + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210205436.json b/.history/lang/en_20241210205436.json new file mode 100644 index 0000000..db48c2a --- /dev/null +++ b/.history/lang/en_20241210205436.json @@ -0,0 +1,570 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + } + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210205437.json b/.history/lang/en_20241210205437.json new file mode 100644 index 0000000..9bfb644 --- /dev/null +++ b/.history/lang/en_20241210205437.json @@ -0,0 +1,570 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210211753.json b/.history/lang/en_20241210211753.json new file mode 100644 index 0000000..166fc84 --- /dev/null +++ b/.history/lang/en_20241210211753.json @@ -0,0 +1,571 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves" + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210211755.json b/.history/lang/en_20241210211755.json new file mode 100644 index 0000000..08fef09 --- /dev/null +++ b/.history/lang/en_20241210211755.json @@ -0,0 +1,571 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210211759.json b/.history/lang/en_20241210211759.json new file mode 100644 index 0000000..c4d4f91 --- /dev/null +++ b/.history/lang/en_20241210211759.json @@ -0,0 +1,571 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225328.json b/.history/lang/en_20241210225328.json new file mode 100644 index 0000000..819a290 --- /dev/null +++ b/.history/lang/en_20241210225328.json @@ -0,0 +1,572 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225330.json b/.history/lang/en_20241210225330.json new file mode 100644 index 0000000..57bd79a --- /dev/null +++ b/.history/lang/en_20241210225330.json @@ -0,0 +1,572 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225333.json b/.history/lang/en_20241210225333.json new file mode 100644 index 0000000..cbae457 --- /dev/null +++ b/.history/lang/en_20241210225333.json @@ -0,0 +1,572 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225340.json b/.history/lang/en_20241210225340.json new file mode 100644 index 0000000..6a378c3 --- /dev/null +++ b/.history/lang/en_20241210225340.json @@ -0,0 +1,573 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225344.json b/.history/lang/en_20241210225344.json new file mode 100644 index 0000000..cae0bf8 --- /dev/null +++ b/.history/lang/en_20241210225344.json @@ -0,0 +1,573 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225347.json b/.history/lang/en_20241210225347.json new file mode 100644 index 0000000..35b9e96 --- /dev/null +++ b/.history/lang/en_20241210225347.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + + } + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225350.json b/.history/lang/en_20241210225350.json new file mode 100644 index 0000000..ecb881f --- /dev/null +++ b/.history/lang/en_20241210225350.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225353.json b/.history/lang/en_20241210225353.json new file mode 100644 index 0000000..97830f3 --- /dev/null +++ b/.history/lang/en_20241210225353.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "stre" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225355.json b/.history/lang/en_20241210225355.json new file mode 100644 index 0000000..163b7c4 --- /dev/null +++ b/.history/lang/en_20241210225355.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225356.json b/.history/lang/en_20241210225356.json new file mode 100644 index 0000000..78fdc22 --- /dev/null +++ b/.history/lang/en_20241210225356.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225402.json b/.history/lang/en_20241210225402.json new file mode 100644 index 0000000..4628346 --- /dev/null +++ b/.history/lang/en_20241210225402.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225404.json b/.history/lang/en_20241210225404.json new file mode 100644 index 0000000..848e754 --- /dev/null +++ b/.history/lang/en_20241210225404.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "strength" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225406.json b/.history/lang/en_20241210225406.json new file mode 100644 index 0000000..eeed56f --- /dev/null +++ b/.history/lang/en_20241210225406.json @@ -0,0 +1,575 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225407.json b/.history/lang/en_20241210225407.json new file mode 100644 index 0000000..bdfbdbf --- /dev/null +++ b/.history/lang/en_20241210225407.json @@ -0,0 +1,576 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225408.json b/.history/lang/en_20241210225408.json new file mode 100644 index 0000000..8e75ac5 --- /dev/null +++ b/.history/lang/en_20241210225408.json @@ -0,0 +1,576 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225410.json b/.history/lang/en_20241210225410.json new file mode 100644 index 0000000..f3efec0 --- /dev/null +++ b/.history/lang/en_20241210225410.json @@ -0,0 +1,576 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225415.json b/.history/lang/en_20241210225415.json new file mode 100644 index 0000000..c17c0a0 --- /dev/null +++ b/.history/lang/en_20241210225415.json @@ -0,0 +1,576 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225418.json b/.history/lang/en_20241210225418.json new file mode 100644 index 0000000..185695d --- /dev/null +++ b/.history/lang/en_20241210225418.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225420.json b/.history/lang/en_20241210225420.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225420.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225421.json b/.history/lang/en_20241210225421.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225421.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225438.json b/.history/lang/en_20241210225438.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225438.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225439.json b/.history/lang/en_20241210225439.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225439.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225440.json b/.history/lang/en_20241210225440.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225440.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225441.json b/.history/lang/en_20241210225441.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225441.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225557.json b/.history/lang/en_20241210225557.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225557.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225558.json b/.history/lang/en_20241210225558.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225558.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210225600.json b/.history/lang/en_20241210225600.json new file mode 100644 index 0000000..a333a3e --- /dev/null +++ b/.history/lang/en_20241210225600.json @@ -0,0 +1,577 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230016.json b/.history/lang/en_20241210230016.json new file mode 100644 index 0000000..8ab0a53 --- /dev/null +++ b/.history/lang/en_20241210230016.json @@ -0,0 +1,578 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "H" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230017.json b/.history/lang/en_20241210230017.json new file mode 100644 index 0000000..54e3d29 --- /dev/null +++ b/.history/lang/en_20241210230017.json @@ -0,0 +1,578 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP" + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230018.json b/.history/lang/en_20241210230018.json new file mode 100644 index 0000000..b26ccb0 --- /dev/null +++ b/.history/lang/en_20241210230018.json @@ -0,0 +1,578 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230240.json b/.history/lang/en_20241210230240.json new file mode 100644 index 0000000..a5af56a --- /dev/null +++ b/.history/lang/en_20241210230240.json @@ -0,0 +1,579 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception" + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230241.json b/.history/lang/en_20241210230241.json new file mode 100644 index 0000000..621a256 --- /dev/null +++ b/.history/lang/en_20241210230241.json @@ -0,0 +1,581 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + + } + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230244.json b/.history/lang/en_20241210230244.json new file mode 100644 index 0000000..59b065c --- /dev/null +++ b/.history/lang/en_20241210230244.json @@ -0,0 +1,581 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230245.json b/.history/lang/en_20241210230245.json new file mode 100644 index 0000000..30c5a1a --- /dev/null +++ b/.history/lang/en_20241210230245.json @@ -0,0 +1,581 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230249.json b/.history/lang/en_20241210230249.json new file mode 100644 index 0000000..4daeb79 --- /dev/null +++ b/.history/lang/en_20241210230249.json @@ -0,0 +1,583 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230253.json b/.history/lang/en_20241210230253.json new file mode 100644 index 0000000..0639351 --- /dev/null +++ b/.history/lang/en_20241210230253.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230254.json b/.history/lang/en_20241210230254.json new file mode 100644 index 0000000..e4e26d1 --- /dev/null +++ b/.history/lang/en_20241210230254.json @@ -0,0 +1,586 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230255.json b/.history/lang/en_20241210230255.json new file mode 100644 index 0000000..e4e26d1 --- /dev/null +++ b/.history/lang/en_20241210230255.json @@ -0,0 +1,586 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230316.json b/.history/lang/en_20241210230316.json new file mode 100644 index 0000000..86da980 --- /dev/null +++ b/.history/lang/en_20241210230316.json @@ -0,0 +1,585 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230318.json b/.history/lang/en_20241210230318.json new file mode 100644 index 0000000..38aed00 --- /dev/null +++ b/.history/lang/en_20241210230318.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception" + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230320.json b/.history/lang/en_20241210230320.json new file mode 100644 index 0000000..5a47544 --- /dev/null +++ b/.history/lang/en_20241210230320.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception"; + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230321.json b/.history/lang/en_20241210230321.json new file mode 100644 index 0000000..e670b50 --- /dev/null +++ b/.history/lang/en_20241210230321.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception", + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230324.json b/.history/lang/en_20241210230324.json new file mode 100644 index 0000000..25b08c0 --- /dev/null +++ b/.history/lang/en_20241210230324.json @@ -0,0 +1,583 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception", + "bonus": "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230325.json b/.history/lang/en_20241210230325.json new file mode 100644 index 0000000..a96205b --- /dev/null +++ b/.history/lang/en_20241210230325.json @@ -0,0 +1,583 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception", + "bonus": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230327.json b/.history/lang/en_20241210230327.json new file mode 100644 index 0000000..3b27f4a --- /dev/null +++ b/.history/lang/en_20241210230327.json @@ -0,0 +1,582 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception", + "bonus": "Bonus" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230331.json b/.history/lang/en_20241210230331.json new file mode 100644 index 0000000..3b27f4a --- /dev/null +++ b/.history/lang/en_20241210230331.json @@ -0,0 +1,582 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": "Perception", + "bonus": "Bonus" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230347.json b/.history/lang/en_20241210230347.json new file mode 100644 index 0000000..ffb9d08 --- /dev/null +++ b/.history/lang/en_20241210230347.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + + } + "bonus": "Bonus" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230348.json b/.history/lang/en_20241210230348.json new file mode 100644 index 0000000..3ee4e62 --- /dev/null +++ b/.history/lang/en_20241210230348.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + } + "bonus": "Bonus" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230349.json b/.history/lang/en_20241210230349.json new file mode 100644 index 0000000..2daa76a --- /dev/null +++ b/.history/lang/en_20241210230349.json @@ -0,0 +1,584 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": "Bonus" + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230352.json b/.history/lang/en_20241210230352.json new file mode 100644 index 0000000..e4e26d1 --- /dev/null +++ b/.history/lang/en_20241210230352.json @@ -0,0 +1,586 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230353.json b/.history/lang/en_20241210230353.json new file mode 100644 index 0000000..e4e26d1 --- /dev/null +++ b/.history/lang/en_20241210230353.json @@ -0,0 +1,586 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230508.json b/.history/lang/en_20241210230508.json new file mode 100644 index 0000000..7693c5f --- /dev/null +++ b/.history/lang/en_20241210230508.json @@ -0,0 +1,587 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception" + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230513.json b/.history/lang/en_20241210230513.json new file mode 100644 index 0000000..eb582be --- /dev/null +++ b/.history/lang/en_20241210230513.json @@ -0,0 +1,588 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus" + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230514.json b/.history/lang/en_20241210230514.json new file mode 100644 index 0000000..a703d6c --- /dev/null +++ b/.history/lang/en_20241210230514.json @@ -0,0 +1,588 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230729.json b/.history/lang/en_20241210230729.json new file mode 100644 index 0000000..b72a86c --- /dev/null +++ b/.history/lang/en_20241210230729.json @@ -0,0 +1,589 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit" + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230731.json b/.history/lang/en_20241210230731.json new file mode 100644 index 0000000..7d019ae --- /dev/null +++ b/.history/lang/en_20241210230731.json @@ -0,0 +1,589 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230736.json b/.history/lang/en_20241210230736.json new file mode 100644 index 0000000..0c8a137 --- /dev/null +++ b/.history/lang/en_20241210230736.json @@ -0,0 +1,590 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned" + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230737.json b/.history/lang/en_20241210230737.json new file mode 100644 index 0000000..3f18f99 --- /dev/null +++ b/.history/lang/en_20241210230737.json @@ -0,0 +1,590 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230803.json b/.history/lang/en_20241210230803.json new file mode 100644 index 0000000..3f18f99 --- /dev/null +++ b/.history/lang/en_20241210230803.json @@ -0,0 +1,590 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230840.json b/.history/lang/en_20241210230840.json new file mode 100644 index 0000000..7347e3f --- /dev/null +++ b/.history/lang/en_20241210230840.json @@ -0,0 +1,591 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck" + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230841.json b/.history/lang/en_20241210230841.json new file mode 100644 index 0000000..dcada8e --- /dev/null +++ b/.history/lang/en_20241210230841.json @@ -0,0 +1,592 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230842.json b/.history/lang/en_20241210230842.json new file mode 100644 index 0000000..7b01997 --- /dev/null +++ b/.history/lang/en_20241210230842.json @@ -0,0 +1,592 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210230925.json b/.history/lang/en_20241210230925.json new file mode 100644 index 0000000..7b01997 --- /dev/null +++ b/.history/lang/en_20241210230925.json @@ -0,0 +1,592 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231340.json b/.history/lang/en_20241210231340.json new file mode 100644 index 0000000..66f0cf6 --- /dev/null +++ b/.history/lang/en_20241210231340.json @@ -0,0 +1,593 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movemebt" + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231342.json b/.history/lang/en_20241210231342.json new file mode 100644 index 0000000..bb043e4 --- /dev/null +++ b/.history/lang/en_20241210231342.json @@ -0,0 +1,593 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement" + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231345.json b/.history/lang/en_20241210231345.json new file mode 100644 index 0000000..fe1a9ea --- /dev/null +++ b/.history/lang/en_20241210231345.json @@ -0,0 +1,595 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231349.json b/.history/lang/en_20241210231349.json new file mode 100644 index 0000000..fda5f63 --- /dev/null +++ b/.history/lang/en_20241210231349.json @@ -0,0 +1,595 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "wal" + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231350.json b/.history/lang/en_20241210231350.json new file mode 100644 index 0000000..05f1d28 --- /dev/null +++ b/.history/lang/en_20241210231350.json @@ -0,0 +1,596 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231353.json b/.history/lang/en_20241210231353.json new file mode 100644 index 0000000..e68ba88 --- /dev/null +++ b/.history/lang/en_20241210231353.json @@ -0,0 +1,597 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + "run": "Run", + + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231354.json b/.history/lang/en_20241210231354.json new file mode 100644 index 0000000..771e839 --- /dev/null +++ b/.history/lang/en_20241210231354.json @@ -0,0 +1,598 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231357.json b/.history/lang/en_20241210231357.json new file mode 100644 index 0000000..b3cf935 --- /dev/null +++ b/.history/lang/en_20241210231357.json @@ -0,0 +1,598 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + } + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231358.json b/.history/lang/en_20241210231358.json new file mode 100644 index 0000000..c883cf8 --- /dev/null +++ b/.history/lang/en_20241210231358.json @@ -0,0 +1,598 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231359.json b/.history/lang/en_20241210231359.json new file mode 100644 index 0000000..c883cf8 --- /dev/null +++ b/.history/lang/en_20241210231359.json @@ -0,0 +1,598 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231452.json b/.history/lang/en_20241210231452.json new file mode 100644 index 0000000..018915b --- /dev/null +++ b/.history/lang/en_20241210231452.json @@ -0,0 +1,599 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231455.json b/.history/lang/en_20241210231455.json new file mode 100644 index 0000000..83449e5 --- /dev/null +++ b/.history/lang/en_20241210231455.json @@ -0,0 +1,599 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Mo" + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231456.json b/.history/lang/en_20241210231456.json new file mode 100644 index 0000000..eb8185b --- /dev/null +++ b/.history/lang/en_20241210231456.json @@ -0,0 +1,599 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement" + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241210231457.json b/.history/lang/en_20241210231457.json new file mode 100644 index 0000000..e4e1efc --- /dev/null +++ b/.history/lang/en_20241210231457.json @@ -0,0 +1,599 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070308.json b/.history/lang/en_20241217070308.json new file mode 100644 index 0000000..82fa820 --- /dev/null +++ b/.history/lang/en_20241217070308.json @@ -0,0 +1,600 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice" + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070311.json b/.history/lang/en_20241217070311.json new file mode 100644 index 0000000..ef3ebdc --- /dev/null +++ b/.history/lang/en_20241217070311.json @@ -0,0 +1,602 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + + } + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070313.json b/.history/lang/en_20241217070313.json new file mode 100644 index 0000000..d0f7f00 --- /dev/null +++ b/.history/lang/en_20241217070313.json @@ -0,0 +1,602 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070326.json b/.history/lang/en_20241217070326.json new file mode 100644 index 0000000..d0f7f00 --- /dev/null +++ b/.history/lang/en_20241217070326.json @@ -0,0 +1,602 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070729.json b/.history/lang/en_20241217070729.json new file mode 100644 index 0000000..8dc7b3f --- /dev/null +++ b/.history/lang/en_20241217070729.json @@ -0,0 +1,603 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + gainedPoints + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070732.json b/.history/lang/en_20241217070732.json new file mode 100644 index 0000000..b4ee464 --- /dev/null +++ b/.history/lang/en_20241217070732.json @@ -0,0 +1,603 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "gainedPoints + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070733.json b/.history/lang/en_20241217070733.json new file mode 100644 index 0000000..ce0088b --- /dev/null +++ b/.history/lang/en_20241217070733.json @@ -0,0 +1,603 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "gainedPoints" + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lang/en_20241217070734.json b/.history/lang/en_20241217070734.json new file mode 100644 index 0000000..ae3df0e --- /dev/null +++ b/.history/lang/en_20241217070734.json @@ -0,0 +1,605 @@ +{ + "TYPES": { + "Actor": { + "character": "Character", + "opponent": "NPC" + }, + "Item": { + "skill": "Skill", + "weapon": "Weapon", + "armor": "Armor", + "spell": "Spell", + "gift": "Gift", + "vulnerability": "Vulnerability", + "save": "Save", + "equipment": "Equipment" , + "shield": "Shield", + "miracle": "Miracle" + } + }, + + "LETHALFANTASY": { + "Miracle": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + }, + "catalyst": { + "label": "Catalyst" + }, + "religious": { + "label": "Religious" + } + }, + "level": { + "label": "Level" + }, + "prayerTime": { + "label": "Prayer time" + }, + "miracleRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + } + } + }, + "Character": { + "FIELDS": { + "str": { + "label": "Strength" + }, + "dex": { + "label": "Dexterity" + }, + "int": { + "label": "Intelligence" + }, + "wis": { + "label": "Wisdom" + }, + "con": { + "label": "Constitution" + }, + "char": { + "label": "Charisma" + }, + "app": { + "label": "Appearance" + } + }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" + } + } + }, + "Opponent": { + "FIELDS": { + } + }, + "Skill": { + "Category": { + "layperson": "Layperson", + "professional": "Professional", + "weapon": "Weapon", + "armor": "Armor", + "resist": "Resist" + }, + "FIELDS": { + "category": { + "label": "Category" + }, + "weaponClass": { + "label": "Class" + }, + "weaponBonus": { + "attack": { + "label": "Attack Bonus" + }, + "damage": { + "label": "Damage Bonus" + }, + "defense": { + "label": "Defense Bonus" + } + }, + "bonus" :{ + "label": "Bonus" + }, + "base": { + "label": "Base" + }, + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Equipment": { + "FIELDS": { + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + }, + "description": { + "label": "Description" + } + } + }, + "Gift": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "description": { + "label": "Description" + } + } + }, + "Weapon": { + "WeaponType": { + "melee": "Melee", + "ranged": "Ranged" + }, + "WeaponClass": { + "longblade": "Long blade", + "shortblade": "Short blade", + "mediumblade": "Medium blade", + "axe": "Axe", + "hammer": "Hammer", + "polearm": "Polearm", + "thrown": "Thrown", + "bow": "Bow", + "flail": "Flail", + "sling": "Sling", + "unarmed": "Unarmed", + "mace": "Mace" + }, + "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, + "equipped": { + "label": "Equipped" + }, + "weaponType": { + "label": "Type" + }, + "damageType": { + "typeP": { + "label": "Piercing" + }, + "typeB": { + "label": "Bashing" + }, + "typeS": { + "label": "Slashing" + } + }, + "damage": { + "damageS": { + "label": "Small" + }, + "damageM": { + "label": "Medium" + } + }, + "hands": { + "label": "Hands" + }, + "defenseMax": { + "label": "Defense max" + }, + "secondsToAttack": { + "label": "Seconds to attack" + }, + "speed": { + "simpleAim": { + "label": "Simple aim" + }, + "carefulAim": { + "label": "Careful aim" + }, + "focusedAim": { + "label": "Focused aim" + } + }, + "defense": { + "label": "Defense" + }, + "weaponRange": { + "pointBlank": { + "label": "Point blank" + }, + "short": { + "label": "Short" + }, + "medium": { + "label": "Medium" + }, + "long": { + "label": "Long" + }, + "extreme": { + "label": "Extreme" + }, + "outOfSkill": { + "label": "Out of skill" + } + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Armor": { + "Category": { + "light": "Light", + "medium": "Medium", + "heavy": "Heavy" + }, + "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, + "armorType": { + "label": "Category" + }, + "defense": { + "label": "Defense" + }, + "maximumMovement": { + "label": "Maximum movement" + }, + "hp": { + "label": "HP" + }, + "damageReduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Shield": { + "FIELDS": { + "equipped": { + "label": "Equipped" + }, + "defense": { + "label": "Defense" + }, + "movementreduction": { + "label": "Movement reduction" + }, + "hp": { + "label": "HP" + }, + "standing": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "crouching": { + "min":{ + "label": "Min" + }, + "max":{ + "label": "Max" + } + }, + "destruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "autodestruction": { + "bashing": { + "label": "Bashing" + }, + "slashing": { + "label": "Slashing" + }, + "piercing": { + "label": "Piercing" + } + }, + "damagereduction": { + "label": "Damage reduction" + }, + "encLoad": { + "label": "Load" + }, + "cost": { + "label": "Cost" + }, + "money": { + "label": "Money unit" + } + } + }, + "Spell": { + "FIELDS": { + "description": { + "label": "Description" + }, + "components": { + "verbal": { + "label": "Verbal" + }, + "somatic": { + "label": "Somatic" + }, + "material": { + "label": "Material" + } + }, + "level": { + "label": "Level" + }, + "cost" : { + "label": "Cost" + }, + "castingTime": { + "label": "Casting time" + }, + "spellRange": { + "label": "Range" + }, + "duration": { + "label": "Duration" + }, + "areaAffected": { + "label": "Area affected" + }, + "savingThrow": { + "label": "Saving throw" + }, + "extraAetherPoints": { + "label": "Extra aether points" + } + } + }, + "Vulnerability": { + "FIELDS": { + "cost": { + "label": "Cost" + }, + "gainedPoints": { + "label": "Gained points" + }, + "description": { + "label": "Description" + } + } + }, + "Save": { + "FIELDS": { + "value": { + "label": "Value" + }, + "description": { + "label": "Description" + } + } + }, + "Money": { + "Tinbits": "Tin Bits", + "Coppers": "Copper", + "Silvers": "Silver", + "Golds": "Gold", + "Platinums": "Platinum" + }, + "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", + "characteristics": "Characteristics", + "characteristic": "Characteristic", + "description": "Description", + "notes": "Notes", + "total": "Total", + "details": "Details", + "skills": "Skills", + "equipment": "Equipment", + "weapons": "Weapons", + "spells" : "Spells", + "level": "Level", + "damage": "Damage", + "resource": "Resource", + "resources": "Resources", + "save": "Save", + "newArmor": "New armor", + "newWeapon": "New weapon", + "armor": "Armor", + "malus": "Malus", + "jet": "Roll", + "experience": "Experience", + "maximum": "Maximum", + "pc": "PC", + "biography": "Biography", + "gifts": "Gifts", + "vulnerabilities": "Vulnerabilities", + "str": "STR", + "wis": "WIS", + "int": "INT", + "con": "CON", + "dex": "DEX", + "luc": "LUC", + "app": "APP", + "cha": "CHA" + }, + "Edit": "Edit", + "Delete": "Delete", + "ToggleSheet": "Toggle mode", + "Warning": { + }, + "Roll": { + "save": "Jet de sauvegarde
{save}", + "resource": "Jet de ressource
{resource}", + "damage": "Jet de dégâts
{item}", + "attack": "Jet d'attaque
{item}", + "roll": "Lancer", + "aide": "Aider", + "gene": "Gêner", + "adversite": "Adversité", + "avantagesDesavantages": "Avantages et désavantages", + "normal": "Normal", + "avantage": "Avec avantage", + "desavantage": "Avec désavantage", + "doubleAvantage": "Avec double avantage", + "doubleDesavantage": "Avec double désavantage", + "visibilite": "Visibilité du lancer", + "success": "Réussite", + "failure": "Echec", + "resourceLost": "Ressource perdue", + "displayArmor": "{targetName} a une armure de {targetArmor}.
Dégâts réels : {realDamage}" + }, + "Tooltip": { + "skill": "Skills list", + "addEquipment": "New equipment", + "addSpell": "New spells" + }, + "Setting": { + "displayOpponentMalus": "Afficher le malus d'adversité", + "displayOpponentMalusHint": "Affiche le malus d'adversité pour les joueurs.", + "fortune": "Roue de Fortune", + "fortuneHint": "Valeur de la roue de Fortune. Nombre de joueurs + 1 en début de partie." + }, + "Chat": { + "askFortune": "{name} veut utiliser un point de Fortune !", + "askRollForAll": "Jet de {value}", + "askRollForOne": "Jet de {value} pour {name}" + }, + "Fortune": { + "title": "Roue de Fortune" + }, + "Manager": { + "title": "Gestionnaire de Personnages", + "player": "Utilisateur", + "character": "Personnage", + "rob": "Robustesse", + "dex": "Dextérité", + "int": "Intelligence", + "per": "Perception", + "vol": "Volonté", + "pv": "Points de Vie", + "san": "Santé Mentale", + "oeil": "Œil", + "verbe": "Verbe", + "bourse": "Bourse", + "magie": "Magie", + "roll": "Faire le jet" + } + } +} diff --git a/.history/lethal-fantasy_20241207081924.mjs b/.history/lethal-fantasy_20241207081924.mjs new file mode 100644 index 0000000..3016d37 --- /dev/null +++ b/.history/lethal-fantasy_20241207081924.mjs @@ -0,0 +1,204 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151149.mjs b/.history/lethal-fantasy_20241209151149.mjs new file mode 100644 index 0000000..2eab33e --- /dev/null +++ b/.history/lethal-fantasy_20241209151149.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151153.mjs b/.history/lethal-fantasy_20241209151153.mjs new file mode 100644 index 0000000..c233cf8 --- /dev/null +++ b/.history/lethal-fantasy_20241209151153.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items. + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151155.mjs b/.history/lethal-fantasy_20241209151155.mjs new file mode 100644 index 0000000..6aba864 --- /dev/null +++ b/.history/lethal-fantasy_20241209151155.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.re + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151158.mjs b/.history/lethal-fantasy_20241209151158.mjs new file mode 100644 index 0000000..cbfe6e0 --- /dev/null +++ b/.history/lethal-fantasy_20241209151158.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151200.mjs b/.history/lethal-fantasy_20241209151200.mjs new file mode 100644 index 0000000..cbfe6e0 --- /dev/null +++ b/.history/lethal-fantasy_20241209151200.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151204.mjs b/.history/lethal-fantasy_20241209151204.mjs new file mode 100644 index 0000000..b739721 --- /dev/null +++ b/.history/lethal-fantasy_20241209151204.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151205.mjs b/.history/lethal-fantasy_20241209151205.mjs new file mode 100644 index 0000000..bce0298 --- /dev/null +++ b/.history/lethal-fantasy_20241209151205.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMir + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151206.mjs b/.history/lethal-fantasy_20241209151206.mjs new file mode 100644 index 0000000..37f201e --- /dev/null +++ b/.history/lethal-fantasy_20241209151206.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151207.mjs b/.history/lethal-fantasy_20241209151207.mjs new file mode 100644 index 0000000..37f201e --- /dev/null +++ b/.history/lethal-fantasy_20241209151207.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209151209.mjs b/.history/lethal-fantasy_20241209151209.mjs new file mode 100644 index 0000000..37f201e --- /dev/null +++ b/.history/lethal-fantasy_20241209151209.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241209231439.mjs b/.history/lethal-fantasy_20241209231439.mjs new file mode 100644 index 0000000..37f201e --- /dev/null +++ b/.history/lethal-fantasy_20241209231439.mjs @@ -0,0 +1,206 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySaveSheet, { types: ["save"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241210071333.mjs b/.history/lethal-fantasy_20241210071333.mjs new file mode 100644 index 0000000..942d012 --- /dev/null +++ b/.history/lethal-fantasy_20241210071333.mjs @@ -0,0 +1,205 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + save: models.LethalFantasySave, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/lethal-fantasy_20241210071338.mjs b/.history/lethal-fantasy_20241210071338.mjs new file mode 100644 index 0000000..5ddcd19 --- /dev/null +++ b/.history/lethal-fantasy_20241210071338.mjs @@ -0,0 +1,204 @@ +/** + * Lethal Fantasy RPG System + * Author: LeRatierBretonnien/Uberwald + */ + +import { SYSTEM } from "./module/config/system.mjs" +globalThis.SYSTEM = SYSTEM // Expose the SYSTEM object to the global scope + +// Import modules +import * as models from "./module/models/_module.mjs" +import * as documents from "./module/documents/_module.mjs" +import * as applications from "./module/applications/_module.mjs" + +import { handleSocketEvent } from "./module/socket.mjs" +import { Macros } from "./module/macros.mjs" +import { initControlButtons } from "./module/control-buttons.mjs" +import { setupTextEnrichers } from "./module/enrichers.mjs" + +export class ClassCounter{static printHello(){console.log("Hello")}static sendJsonPostRequest(e,s){const t={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)};return fetch(e,t).then((e=>{if(!e.ok)throw new Error("La requête a échoué avec le statut "+e.status);return e.json()})).catch((e=>{throw console.error("Erreur envoi de la requête:",e),e}))}static registerUsageCount(e=game.system.id,s={}){if(game.user.isGM){game.settings.register(e,"world-key",{name:"Unique world key",scope:"world",config:!1,default:"",type:String});let t=game.settings.get(e,"world-key");null!=t&&""!=t&&"NONE"!=t&&"none"!=t.toLowerCase()||(t=foundry.utils.randomID(32),game.settings.set(e,"world-key",t));let a={name:e,system:game.system.id,worldKey:t,version:game.system.version,language:game.settings.get("core","language"),remoteAddr:game.data.addresses.remote,nbInstalledModules:game.modules.size,nbActiveModules:game.modules.filter((e=>e.active)).length,nbPacks:game.world.packs.size,nbUsers:game.users.size,nbScenes:game.scenes.size,nbActors:game.actors.size,nbPlaylist:game.playlists.size,nbTables:game.tables.size,nbCards:game.cards.size,optionsData:s,foundryVersion:`${game.release.generation}.${game.release.build}`};this.sendJsonPostRequest("https://www.uberwald.me/fvtt_appcount/count_post.php",a)}}} + +Hooks.once("init", function () { + console.info("Lethal Fantasy RPG | Initializing System") + console.info(SYSTEM.ASCII) + + globalThis.lethalFantasy = game.system + game.system.CONST = SYSTEM + + // Expose the system API + game.system.api = { + applications, + models, + documents, + } + + CONFIG.Actor.documentClass = documents.LethalFantasyActor + CONFIG.Actor.dataModels = { + character: models.LethalFantasyCharacter, + opponent: models.LethalFantasyOpponent, + } + + CONFIG.Item.documentClass = documents.LethalFantasyItem + CONFIG.Item.dataModels = { + skill: models.LethalFantasySkill, + gift: models.LethalFantasyGift, + weapon: models.LethalFantasyWeapon, + armor: models.LethalFantasyArmor, + shield: models.LethalFantasyShield, + spell: models.LethalFantasySpell, + vulnerability: models.LethalFantasyVulnerability, + equipment: models.LethalFantasyEquipment, + miracle: models.LethalFantasyMiracle + } + + // Register sheet application classes + Actors.unregisterSheet("core", ActorSheet) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyCharacterSheet, { types: ["character"], makeDefault: true }) + Actors.registerSheet("lethalFantasy", applications.LethalFantasyOpponentSheet, { types: ["opponent"], makeDefault: true }) + + Items.unregisterSheet("core", ItemSheet) + Items.registerSheet("lethalFantasy", applications.LethalFantasySkillSheet, { types: ["skill"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyGiftSheet, { types: ["gift"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyVulnerabilitySheet, { types: ["vulnerability"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyWeaponSheet, { types: ["weapon"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasySpellSheet, { types: ["spell"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyArmorSheet, { types: ["armor"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyShieldSheet, { types: ["shield"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyEquipmentSheet, { types: ["equipment"], makeDefault: true }) + Items.registerSheet("lethalFantasy", applications.LethalFantasyMiracleSheet, { types: ["miracle"], makeDefault: true }) + + // Other Document Configuration + CONFIG.ChatMessage.documentClass = documents.LethalFantasyChatMessage + + // Dice system configuration + CONFIG.Dice.rolls.push(documents.LethalFantasyRoll) + + game.settings.register("lethalFantasy", "worldKey", { + name: "Unique world key", + scope: "world", + config: false, + type: String, + default: "", + }) + + // Activate socket handler + game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent) + + + initControlButtons() + + setupTextEnrichers() + + // Gestion des jets de dés depuis les journaux + document.addEventListener("click", (event) => { + const anchor = event.target.closest("a.ask-roll-journal") + if (!anchor) return + event.preventDefault() + event.stopPropagation() + const type = anchor.dataset.rollType + const target = anchor.dataset.rollTarget + const title = anchor.dataset.rollTitle + const avantage = anchor.dataset.rollAvantage + applications.LethalFantasyManager.askRollForAll(type, target, title, avantage) + }) + + console.info("LETHAL FANTASY | System Initialized") +}) + +/** + * Perform one-time configuration of system configuration objects. + */ +function preLocalizeConfig() { + const localizeConfigObject = (obj, keys) => { + for (let o of Object.values(obj)) { + for (let k of keys) { + o[k] = game.i18n.localize(o[k]) + } + } + } + + // CONFIG.Dice.rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + + // localizeConfigObject(SYSTEM.ACTION.TAG_CATEGORIES, ["label"]) + // localizeConfigObject(CONFIG.Dice.rollModes, ["label"]) +} + +Hooks.once("ready", function () { + console.info("LETHAL FANTASY | Ready") + game.system.applicationManager = new applications.LethalFantasyManager() + if (game.user.isGM) { + //game.system.applicationManager.render(true) + } + + if (!SYSTEM.DEV_MODE) { + registerWorldCount("lethalFantasy") + } + _showUserGuide() + + /** + * + */ + async function _showUserGuide() { + if (game.user.isGM) { + const newVer = game.system.version + } + } +}) + +Hooks.on("renderChatMessage", (message, html, data) => { + const typeMessage = data.message.flags.lethalFantasy?.typeMessage + // Message de demande de jet de dés + if (typeMessage === "askRoll") { + // Affichage des boutons de jet de dés uniquement pour les joueurs + if (game.user.isGM) { + html.find(".ask-roll-dice").each((i, btn) => { + btn.style.display = "none" + }) + } else { + html.find(".ask-roll-dice").click((event) => { + const btn = $(event.currentTarget) + const type = btn.data("type") + const value = btn.data("value") + const avantage = btn.data("avantage") ?? "=" + const character = game.user.character + if (type === SYSTEM.ROLL_TYPE.RESOURCE) character.rollResource(value) + else if (type === SYSTEM.ROLL_TYPE.SAVE) character.rollSave(value, avantage) + }) + } + } +}) + +Hooks.on("updateSetting", async (setting, update, options, id) => { +}) + +// Dice-so-nice Ready +Hooks.once("diceSoNiceReady", (dice3d) => { + configureDiceSoNice(dice3d) +}) + +/** + * Create a macro when dropping an entity on the hotbar + * Item - open roll dialog + * Actor - open actor sheet + * Journal - open journal sheet + */ +Hooks.on("hotbarDrop", (bar, data, slot) => { + if (["Actor", "Item", "JournalEntry", "roll", "rollDamage", "rollAttack"].includes(data.type)) { + Macros.createLethalFantasyMacro(data, slot); + return false + } +}) + +/** + * Register world usage statistics + * @param {string} registerKey + */ +async function registerWorldCount(registerKey) { + if (game.user.isGM) { + try { + ClassCounter.registerUsageCount(game.system.id, {}) + } catch { + console.log("No usage log ") + } + } +} \ No newline at end of file diff --git a/.history/module/applications/_module_20241201145411.mjs b/.history/module/applications/_module_20241201145411.mjs new file mode 100644 index 0000000..f04e2b4 --- /dev/null +++ b/.history/module/applications/_module_20241201145411.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacterSheet } from "./sheets/character-sheet.mjs"; +export { default as LethalFantasyOpponentSheet } from "./sheets/opponent-sheet.mjs" +export { default as LethalFantasyWeaponSheet } from "./sheets/weapon-sheet.mjs" +export { default as LethalFantasySkillSheet } from "./sheets/skill-sheet.mjs" +export { default as LethalFantasyGiftSheet } from "./sheets/gift-sheet.mjs" +export { default as LethalFantasyVulnerabilitySheet } from "./sheets/vulnerability-sheet.mjs" +export { default as LethalFantasySaveSheet } from "./sheets/save-sheet.mjs" +export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs" +export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs" +export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs" +export { default as LethalFantasyManager } from "./manager.mjs" diff --git a/.history/module/applications/_module_20241209151255.mjs b/.history/module/applications/_module_20241209151255.mjs new file mode 100644 index 0000000..8c68668 --- /dev/null +++ b/.history/module/applications/_module_20241209151255.mjs @@ -0,0 +1,13 @@ +export { default as LethalFantasyCharacterSheet } from "./sheets/character-sheet.mjs"; +export { default as LethalFantasyOpponentSheet } from "./sheets/opponent-sheet.mjs" +export { default as LethalFantasyWeaponSheet } from "./sheets/weapon-sheet.mjs" +export { default as LethalFantasySkillSheet } from "./sheets/skill-sheet.mjs" +export { default as LethalFantasyGiftSheet } from "./sheets/gift-sheet.mjs" +export { default as LethalFantasyVulnerabilitySheet } from "./sheets/vulnerability-sheet.mjs" +export { default as LethalFantasySaveSheet } from "./sheets/save-sheet.mjs" +export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs" +export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs" +export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs" +export { default as LethalFantasyManager } from "./manager.mjs" + diff --git a/.history/module/applications/_module_20241209151257.mjs b/.history/module/applications/_module_20241209151257.mjs new file mode 100644 index 0000000..abee493 --- /dev/null +++ b/.history/module/applications/_module_20241209151257.mjs @@ -0,0 +1,14 @@ +export { default as LethalFantasyCharacterSheet } from "./sheets/character-sheet.mjs"; +export { default as LethalFantasyOpponentSheet } from "./sheets/opponent-sheet.mjs" +export { default as LethalFantasyWeaponSheet } from "./sheets/weapon-sheet.mjs" +export { default as LethalFantasySkillSheet } from "./sheets/skill-sheet.mjs" +export { default as LethalFantasyGiftSheet } from "./sheets/gift-sheet.mjs" +export { default as LethalFantasyVulnerabilitySheet } from "./sheets/vulnerability-sheet.mjs" +export { default as LethalFantasySaveSheet } from "./sheets/save-sheet.mjs" +export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs" +export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs" +export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs" + +export { default as LethalFantasyManager } from "./manager.mjs" + diff --git a/.history/module/applications/_module_20241209151258.mjs b/.history/module/applications/_module_20241209151258.mjs new file mode 100644 index 0000000..2a93a30 --- /dev/null +++ b/.history/module/applications/_module_20241209151258.mjs @@ -0,0 +1,14 @@ +export { default as LethalFantasyCharacterSheet } from "./sheets/character-sheet.mjs"; +export { default as LethalFantasyOpponentSheet } from "./sheets/opponent-sheet.mjs" +export { default as LethalFantasyWeaponSheet } from "./sheets/weapon-sheet.mjs" +export { default as LethalFantasySkillSheet } from "./sheets/skill-sheet.mjs" +export { default as LethalFantasyGiftSheet } from "./sheets/gift-sheet.mjs" +export { default as LethalFantasyVulnerabilitySheet } from "./sheets/vulnerability-sheet.mjs" +export { default as LethalFantasySaveSheet } from "./sheets/save-sheet.mjs" +export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs" +export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs" +export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs" +export { default as LethalFantasyMiracleSheet } from "./sheets/miracle-sheet.mjs" +export { default as LethalFantasyManager } from "./manager.mjs" + diff --git a/.history/module/applications/_module_20241210071442.mjs b/.history/module/applications/_module_20241210071442.mjs new file mode 100644 index 0000000..bbd149e --- /dev/null +++ b/.history/module/applications/_module_20241210071442.mjs @@ -0,0 +1,13 @@ +export { default as LethalFantasyCharacterSheet } from "./sheets/character-sheet.mjs"; +export { default as LethalFantasyOpponentSheet } from "./sheets/opponent-sheet.mjs" +export { default as LethalFantasyWeaponSheet } from "./sheets/weapon-sheet.mjs" +export { default as LethalFantasySkillSheet } from "./sheets/skill-sheet.mjs" +export { default as LethalFantasyGiftSheet } from "./sheets/gift-sheet.mjs" +export { default as LethalFantasyVulnerabilitySheet } from "./sheets/vulnerability-sheet.mjs" +export { default as LethalFantasyArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as LethalFantasySpellSheet } from "./sheets/spell-sheet.mjs" +export { default as LethalFantasyEquipmentSheet } from "./sheets/equipment-sheet.mjs" +export { default as LethalFantasyShieldSheet } from "./sheets/shield-sheet.mjs" +export { default as LethalFantasyMiracleSheet } from "./sheets/miracle-sheet.mjs" +export { default as LethalFantasyManager } from "./manager.mjs" + diff --git a/.history/module/applications/sheets/armor-sheet_20241121235703.mjs b/.history/module/applications/sheets/armor-sheet_20241121235703.mjs new file mode 100644 index 0000000..6be8a08 --- /dev/null +++ b/.history/module/applications/sheets/armor-sheet_20241121235703.mjs @@ -0,0 +1,27 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyArmorSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["armor"], + position: { + width: 400, + }, + window: { + contentClasses: ["armor-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/armor.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + return context + } +} diff --git a/.history/module/applications/sheets/armor-sheet_20241210071050.mjs b/.history/module/applications/sheets/armor-sheet_20241210071050.mjs new file mode 100644 index 0000000..f125985 --- /dev/null +++ b/.history/module/applications/sheets/armor-sheet_20241210071050.mjs @@ -0,0 +1,22 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyArmorSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["armor"], + position: { + width: 400, + }, + window: { + contentClasses: ["armor-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/armor.hbs", + }, + } + +} diff --git a/.history/module/applications/sheets/armor-sheet_20241210072306.mjs b/.history/module/applications/sheets/armor-sheet_20241210072306.mjs new file mode 100644 index 0000000..48b2ec9 --- /dev/null +++ b/.history/module/applications/sheets/armor-sheet_20241210072306.mjs @@ -0,0 +1,30 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyArmorSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["armor"], + position: { + width: 400, + }, + window: { + contentClasses: ["armor-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/armor.hbs", + }, + } + + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/armor-sheet_20241210072307.mjs b/.history/module/applications/sheets/armor-sheet_20241210072307.mjs new file mode 100644 index 0000000..3119274 --- /dev/null +++ b/.history/module/applications/sheets/armor-sheet_20241210072307.mjs @@ -0,0 +1,30 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyArmorSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["armor"], + position: { + width: 400, + }, + window: { + contentClasses: ["armor-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/armor.hbs", + }, + } + + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/character-sheet_20241207085714.mjs b/.history/module/applications/sheets/character-sheet_20241207085714.mjs new file mode 100644 index 0000000..6a37ab5 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241207085714.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153603.mjs b/.history/module/applications/sheets/character-sheet_20241208153603.mjs new file mode 100644 index 0000000..5d3cd93 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153603.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153604.mjs b/.history/module/applications/sheets/character-sheet_20241208153604.mjs new file mode 100644 index 0000000..6a37ab5 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153604.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153607.mjs b/.history/module/applications/sheets/character-sheet_20241208153607.mjs new file mode 100644 index 0000000..755ad17 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153607.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153608.mjs b/.history/module/applications/sheets/character-sheet_20241208153608.mjs new file mode 100644 index 0000000..755ad17 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153608.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153649.mjs b/.history/module/applications/sheets/character-sheet_20241208153649.mjs new file mode 100644 index 0000000..e363eb4 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153649.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153652.mjs b/.history/module/applications/sheets/character-sheet_20241208153652.mjs new file mode 100644 index 0000000..0678e76 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153652.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: " 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153655.mjs b/.history/module/applications/sheets/character-sheet_20241208153655.mjs new file mode 100644 index 0000000..e486d2a --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153655.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153656.mjs b/.history/module/applications/sheets/character-sheet_20241208153656.mjs new file mode 100644 index 0000000..e486d2a --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153656.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208153657.mjs b/.history/module/applications/sheets/character-sheet_20241208153657.mjs new file mode 100644 index 0000000..e486d2a --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208153657.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154229.mjs b/.history/module/applications/sheets/character-sheet_20241208154229.mjs new file mode 100644 index 0000000..be61a29 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154229.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spells + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154230.mjs b/.history/module/applications/sheets/character-sheet_20241208154230.mjs new file mode 100644 index 0000000..e486d2a --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154230.mjs @@ -0,0 +1,194 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154238.mjs b/.history/module/applications/sheets/character-sheet_20241208154238.mjs new file mode 100644 index 0000000..703d05e --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154238.mjs @@ -0,0 +1,195 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.weapons + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154242.mjs b/.history/module/applications/sheets/character-sheet_20241208154242.mjs new file mode 100644 index 0000000..3077a74 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154242.mjs @@ -0,0 +1,195 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154244.mjs b/.history/module/applications/sheets/character-sheet_20241208154244.mjs new file mode 100644 index 0000000..3077a74 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154244.mjs @@ -0,0 +1,195 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154246.mjs b/.history/module/applications/sheets/character-sheet_20241208154246.mjs new file mode 100644 index 0000000..674fd2d --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154246.mjs @@ -0,0 +1,195 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weaponss + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154249.mjs b/.history/module/applications/sheets/character-sheet_20241208154249.mjs new file mode 100644 index 0000000..3077a74 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154249.mjs @@ -0,0 +1,195 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154525.mjs b/.history/module/applications/sheets/character-sheet_20241208154525.mjs new file mode 100644 index 0000000..72b552d --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154525.mjs @@ -0,0 +1,196 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + break; + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154526.mjs b/.history/module/applications/sheets/character-sheet_20241208154526.mjs new file mode 100644 index 0000000..72b552d --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154526.mjs @@ -0,0 +1,196 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + break; + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154527.mjs b/.history/module/applications/sheets/character-sheet_20241208154527.mjs new file mode 100644 index 0000000..72b552d --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154527.mjs @@ -0,0 +1,196 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + break; + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154528.mjs b/.history/module/applications/sheets/character-sheet_20241208154528.mjs new file mode 100644 index 0000000..72b552d --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154528.mjs @@ -0,0 +1,196 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + break; + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/character-sheet_20241208154530.mjs b/.history/module/applications/sheets/character-sheet_20241208154530.mjs new file mode 100644 index 0000000..4ad4676 --- /dev/null +++ b/.history/module/applications/sheets/character-sheet_20241208154530.mjs @@ -0,0 +1,196 @@ +import LethalFantasyActorSheet from "./base-actor-sheet.mjs" +import { ROLL_TYPE } from "../../config/system.mjs" + +export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["character"], + position: { + width: 1150, + height: 780, + }, + window: { + contentClasses: ["character-content"], + }, + actions: { + createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/character-main.hbs", + }, + tabs: { + template: "templates/generic/tab-navigation.hbs", + }, + skills: { + template: "systems/fvtt-lethal-fantasy/templates/character-skills.hbs", + }, + weapons: { + template: "systems/fvtt-lethal-fantasy/templates/character-weapons.hbs", + }, + spells: { + template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs", + }, + biography: { + template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs", + }, + } + + /** @override */ + tabGroups = { + sheet: "skills", + } + + /** + * Prepare an array of form header tabs. + * @returns {Record>} + */ + #getTabs() { + const tabs = { + skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "LETHALFANTASY.Label.skills" }, + weapons: { id: "weapons", group: "sheet", icon: "fa-solid fa-swords", label: "LETHALFANTASY.Label.weapons" }, + spells: { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }, + biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "LETHALFANTASY.Label.biography" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + + context.tooltipsCaracteristiques = { + } + + context.tooltipsRessources = { + } + + context.rollType = { + } + return context + } + + _generateTooltip(type, target) { + } + + /** @override */ + async _preparePartContext(partId, context) { + const doc = this.document + switch (partId) { + case "main": + break + case "skills": + context.tab = context.tabs.skills + context.skills = doc.itemTypes.skill + context.gifts = doc.itemTypes.gifts + context.vulnerabilities = doc.itemTypes.vulnerability + break + case "spells": + context.tab = context.tabs.spells + context.spells = doc.itemTypes.spell + context.hasSpells = context.spells.length > 0 + break + case "weapons": + context.tab = context.tabs.weapons + context.weapons = doc.itemTypes.weapon + context.armors = doc.itemTypes.armor + context.equipments = doc.itemTypes.equipment + break + case "biography": + context.tab = context.tabs.biography + context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) + context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + break + } + return context + } + + // #region Drag-and-Drop Workflow + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { + if (!this.isEditable || !this.isEditMode) return + const data = TextEditor.getDragEventData(event) + + // Handle different data types + switch (data.type) { + case "Item": + const item = await fromUuid(data.uuid) + return this._onDropItem(item) + } + } + + async #onDropPathItem(item) { + await this.document.addPath(item) + } + + + /** + * Creates a new attack item directly from the sheet and embeds it into the document. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onCreateEquipment(event, target) { + // Création d'une armure + if (event.shiftKey) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newArmor"), type: "armor" }]) + } + // Création d'une arme + else { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("LETHALFANTASY.Label.newWeapon"), type: "weapon" }]) + } + } + + /** + * Handles the roll action triggered by user interaction. + * + * @param {PointerEvent} event The event object representing the user interaction. + * @param {HTMLElement} target The target element that triggered the roll. + * + * @returns {Promise} A promise that resolves when the roll action is complete. + * + * @throws {Error} Throws an error if the roll type is not recognized. + * + * @description This method checks the current mode (edit or not) and determines the type of roll + * (save, resource, or damage) based on the target element's data attributes. It retrieves the + * corresponding value from the document's system and performs the roll. + */ + async _onRoll(event, target) { + if (this.isEditMode) return + // Jet de sauvegarde + let elt = event.currentTarget.querySelector("input") + // Jet de ressource + if (!elt) elt = event.currentTarget.querySelector("select") + // Jet de dégâts + if (!elt) elt = event.currentTarget + const rollType = elt.dataset.rollType + let rollTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.RESOURCE: + rollTarget = elt.dataset.rollTarget + break + case ROLL_TYPE.DAMAGE: + rollTarget = elt.dataset.itemId + break + default: + break + } + await this.document.system.roll(rollType, rollTarget) + } + // #endregion +} diff --git a/.history/module/applications/sheets/equipment-sheet_20241130083352.mjs b/.history/module/applications/sheets/equipment-sheet_20241130083352.mjs new file mode 100644 index 0000000..ea87928 --- /dev/null +++ b/.history/module/applications/sheets/equipment-sheet_20241130083352.mjs @@ -0,0 +1,27 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyEquipmentSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["equipment"], + position: { + width: 600, + }, + window: { + contentClasses: ["equipment-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/equipment.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + return context + } +} diff --git a/.history/module/applications/sheets/equipment-sheet_20241210072300.mjs b/.history/module/applications/sheets/equipment-sheet_20241210072300.mjs new file mode 100644 index 0000000..dbeb156 --- /dev/null +++ b/.history/module/applications/sheets/equipment-sheet_20241210072300.mjs @@ -0,0 +1,28 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyEquipmentSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["equipment"], + position: { + width: 600, + }, + window: { + contentClasses: ["equipment-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/equipment.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151222.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151222.mjs new file mode 100644 index 0000000..e69de29 diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151225.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151225.mjs new file mode 100644 index 0000000..c5468d2 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151225.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasySpellSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151230.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151230.mjs new file mode 100644 index 0000000..3db9894 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151230.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151231.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151231.mjs new file mode 100644 index 0000000..3db9894 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151231.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151234.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151234.mjs new file mode 100644 index 0000000..770356f --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151234.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151237.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151237.mjs new file mode 100644 index 0000000..a538692 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151237.mjs @@ -0,0 +1,22 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: [" classes: ["miracle"], +-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151239.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151239.mjs new file mode 100644 index 0000000..3db9894 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151239.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151241.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151241.mjs new file mode 100644 index 0000000..770356f --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151241.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151244.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151244.mjs new file mode 100644 index 0000000..551a46f --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151244.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209151245.mjs b/.history/module/applications/sheets/miracle-sheet_20241209151245.mjs new file mode 100644 index 0000000..d3816ce --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209151245.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209231624.mjs b/.history/module/applications/sheets/miracle-sheet_20241209231624.mjs new file mode 100644 index 0000000..d3816ce --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209231624.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209231625.mjs b/.history/module/applications/sheets/miracle-sheet_20241209231625.mjs new file mode 100644 index 0000000..d3816ce --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209231625.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241209231626.mjs b/.history/module/applications/sheets/miracle-sheet_20241209231626.mjs new file mode 100644 index 0000000..d3816ce --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241209231626.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241210072248.mjs b/.history/module/applications/sheets/miracle-sheet_20241210072248.mjs new file mode 100644 index 0000000..39009e2 --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241210072248.mjs @@ -0,0 +1,29 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/miracle-sheet_20241210072251.mjs b/.history/module/applications/sheets/miracle-sheet_20241210072251.mjs new file mode 100644 index 0000000..e9b4afe --- /dev/null +++ b/.history/module/applications/sheets/miracle-sheet_20241210072251.mjs @@ -0,0 +1,29 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyMiracleSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["miracle"], + position: { + width: 450, + }, + window: { + contentClasses: ["miracle-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/miracle.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/shield-sheet_20241203125805.mjs b/.history/module/applications/sheets/shield-sheet_20241203125805.mjs new file mode 100644 index 0000000..46e876e --- /dev/null +++ b/.history/module/applications/sheets/shield-sheet_20241203125805.mjs @@ -0,0 +1,27 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyShieldSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["shield"], + position: { + width: 620, + }, + window: { + contentClasses: ["shield-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/shield.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + return context + } +} diff --git a/.history/module/applications/sheets/shield-sheet_20241210072243.mjs b/.history/module/applications/sheets/shield-sheet_20241210072243.mjs new file mode 100644 index 0000000..30bc6df --- /dev/null +++ b/.history/module/applications/sheets/shield-sheet_20241210072243.mjs @@ -0,0 +1,28 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyShieldSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["shield"], + position: { + width: 620, + }, + window: { + contentClasses: ["shield-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/shield.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } +} diff --git a/.history/module/applications/sheets/spell-sheet_20241121235722.mjs b/.history/module/applications/sheets/spell-sheet_20241121235722.mjs new file mode 100644 index 0000000..c5468d2 --- /dev/null +++ b/.history/module/applications/sheets/spell-sheet_20241121235722.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasySpellSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/spell-sheet_20241210072209.mjs b/.history/module/applications/sheets/spell-sheet_20241210072209.mjs new file mode 100644 index 0000000..3b6394b --- /dev/null +++ b/.history/module/applications/sheets/spell-sheet_20241210072209.mjs @@ -0,0 +1,29 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasySpellSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/spell-sheet_20241210072211.mjs b/.history/module/applications/sheets/spell-sheet_20241210072211.mjs new file mode 100644 index 0000000..de7237c --- /dev/null +++ b/.history/module/applications/sheets/spell-sheet_20241210072211.mjs @@ -0,0 +1,29 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasySpellSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["spell"], + position: { + width: 450, + }, + window: { + contentClasses: ["spell-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/spell.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/weapon-sheet_20241203131225.mjs b/.history/module/applications/sheets/weapon-sheet_20241203131225.mjs new file mode 100644 index 0000000..2c5d0f5 --- /dev/null +++ b/.history/module/applications/sheets/weapon-sheet_20241203131225.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["weapon"], + position: { + width: 620, + }, + window: { + contentClasses: ["weapon-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/weapon.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/weapon-sheet_20241210071054.mjs b/.history/module/applications/sheets/weapon-sheet_20241210071054.mjs new file mode 100644 index 0000000..2c5d0f5 --- /dev/null +++ b/.history/module/applications/sheets/weapon-sheet_20241210071054.mjs @@ -0,0 +1,21 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["weapon"], + position: { + width: 620, + }, + window: { + contentClasses: ["weapon-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/weapon.hbs", + }, + } +} diff --git a/.history/module/applications/sheets/weapon-sheet_20241210072223.mjs b/.history/module/applications/sheets/weapon-sheet_20241210072223.mjs new file mode 100644 index 0000000..e443bd0 --- /dev/null +++ b/.history/module/applications/sheets/weapon-sheet_20241210072223.mjs @@ -0,0 +1,28 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["weapon"], + position: { + width: 620, + }, + window: { + contentClasses: ["weapon-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/weapon.hbs", + }, + } + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/weapon-sheet_20241210072225.mjs b/.history/module/applications/sheets/weapon-sheet_20241210072225.mjs new file mode 100644 index 0000000..c2119a6 --- /dev/null +++ b/.history/module/applications/sheets/weapon-sheet_20241210072225.mjs @@ -0,0 +1,28 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["weapon"], + position: { + width: 620, + }, + window: { + contentClasses: ["weapon-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/weapon.hbs", + }, + } + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/applications/sheets/weapon-sheet_20241210072235.mjs b/.history/module/applications/sheets/weapon-sheet_20241210072235.mjs new file mode 100644 index 0000000..a8f8672 --- /dev/null +++ b/.history/module/applications/sheets/weapon-sheet_20241210072235.mjs @@ -0,0 +1,29 @@ +import LethalFantasyItemSheet from "./base-item-sheet.mjs" + +export default class LethalFantasyWeaponSheet extends LethalFantasyItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["weapon"], + position: { + width: 620, + }, + window: { + contentClasses: ["weapon-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-lethal-fantasy/templates/weapon.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } + +} diff --git a/.history/module/config/character_20241207091147.mjs b/.history/module/config/character_20241207091147.mjs new file mode 100644 index 0000000..dfb3b4b --- /dev/null +++ b/.history/module/config/character_20241207091147.mjs @@ -0,0 +1,61 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075220.mjs b/.history/module/config/character_20241210075220.mjs new file mode 100644 index 0000000..5846e83 --- /dev/null +++ b/.history/module/config/character_20241210075220.mjs @@ -0,0 +1,74 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075222.mjs b/.history/module/config/character_20241210075222.mjs new file mode 100644 index 0000000..120149b --- /dev/null +++ b/.history/module/config/character_20241210075222.mjs @@ -0,0 +1,74 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, +} +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075224.mjs b/.history/module/config/character_20241210075224.mjs new file mode 100644 index 0000000..8539458 --- /dev/null +++ b/.history/module/config/character_20241210075224.mjs @@ -0,0 +1,75 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +} + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075228.mjs b/.history/module/config/character_20241210075228.mjs new file mode 100644 index 0000000..7d1824d --- /dev/null +++ b/.history/module/config/character_20241210075228.mjs @@ -0,0 +1,75 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +} + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075229.mjs b/.history/module/config/character_20241210075229.mjs new file mode 100644 index 0000000..7d1824d --- /dev/null +++ b/.history/module/config/character_20241210075229.mjs @@ -0,0 +1,75 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +} + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075231.mjs b/.history/module/config/character_20241210075231.mjs new file mode 100644 index 0000000..7d1824d --- /dev/null +++ b/.history/module/config/character_20241210075231.mjs @@ -0,0 +1,75 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +} + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075236.mjs b/.history/module/config/character_20241210075236.mjs new file mode 100644 index 0000000..7a5e8dc --- /dev/null +++ b/.history/module/config/character_20241210075236.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +} + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075238.mjs b/.history/module/config/character_20241210075238.mjs new file mode 100644 index 0000000..3635261 --- /dev/null +++ b/.history/module/config/character_20241210075238.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + }, + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075243.mjs b/.history/module/config/character_20241210075243.mjs new file mode 100644 index 0000000..2eaf8e1 --- /dev/null +++ b/.history/module/config/character_20241210075243.mjs @@ -0,0 +1,64 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075254.mjs b/.history/module/config/character_20241210075254.mjs new file mode 100644 index 0000000..175f704 --- /dev/null +++ b/.history/module/config/character_20241210075254.mjs @@ -0,0 +1,68 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075256.mjs b/.history/module/config/character_20241210075256.mjs new file mode 100644 index 0000000..802bddd --- /dev/null +++ b/.history/module/config/character_20241210075256.mjs @@ -0,0 +1,68 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075300.mjs b/.history/module/config/character_20241210075300.mjs new file mode 100644 index 0000000..19522ec --- /dev/null +++ b/.history/module/config/character_20241210075300.mjs @@ -0,0 +1,68 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075305.mjs b/.history/module/config/character_20241210075305.mjs new file mode 100644 index 0000000..ef71da4 --- /dev/null +++ b/.history/module/config/character_20241210075305.mjs @@ -0,0 +1,68 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.toughness.label" + } +}) diff --git a/.history/module/config/character_20241210075306.mjs b/.history/module/config/character_20241210075306.mjs new file mode 100644 index 0000000..92d90da --- /dev/null +++ b/.history/module/config/character_20241210075306.mjs @@ -0,0 +1,68 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + } +}) diff --git a/.history/module/config/character_20241210075311.mjs b/.history/module/config/character_20241210075311.mjs new file mode 100644 index 0000000..3e45721 --- /dev/null +++ b/.history/module/config/character_20241210075311.mjs @@ -0,0 +1,72 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + } + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + } +}) diff --git a/.history/module/config/character_20241210075313.mjs b/.history/module/config/character_20241210075313.mjs new file mode 100644 index 0000000..af49123 --- /dev/null +++ b/.history/module/config/character_20241210075313.mjs @@ -0,0 +1,72 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + } +}) diff --git a/.history/module/config/character_20241210075316.mjs b/.history/module/config/character_20241210075316.mjs new file mode 100644 index 0000000..3c7e958 --- /dev/null +++ b/.history/module/config/character_20241210075316.mjs @@ -0,0 +1,72 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + } +}) diff --git a/.history/module/config/character_20241210075321.mjs b/.history/module/config/character_20241210075321.mjs new file mode 100644 index 0000000..8514aa0 --- /dev/null +++ b/.history/module/config/character_20241210075321.mjs @@ -0,0 +1,72 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "contagion", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075323.mjs b/.history/module/config/character_20241210075323.mjs new file mode 100644 index 0000000..6afa9df --- /dev/null +++ b/.history/module/config/character_20241210075323.mjs @@ -0,0 +1,72 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075331.mjs b/.history/module/config/character_20241210075331.mjs new file mode 100644 index 0000000..9702fa8 --- /dev/null +++ b/.history/module/config/character_20241210075331.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + } + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075333.mjs b/.history/module/config/character_20241210075333.mjs new file mode 100644 index 0000000..01dad70 --- /dev/null +++ b/.history/module/config/character_20241210075333.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075336.mjs b/.history/module/config/character_20241210075336.mjs new file mode 100644 index 0000000..758d50c --- /dev/null +++ b/.history/module/config/character_20241210075336.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075339.mjs b/.history/module/config/character_20241210075339.mjs new file mode 100644 index 0000000..aa949d4 --- /dev/null +++ b/.history/module/config/character_20241210075339.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "pain", + label: "LETHALFANTASY.Character.poison.label" + } +}) diff --git a/.history/module/config/character_20241210075341.mjs b/.history/module/config/character_20241210075341.mjs new file mode 100644 index 0000000..d4547cc --- /dev/null +++ b/.history/module/config/character_20241210075341.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "pain", + label: "LETHALFANTASY.Character.pain.label" + } +}) diff --git a/.history/module/config/character_20241210075630.mjs b/.history/module/config/character_20241210075630.mjs new file mode 100644 index 0000000..d4547cc --- /dev/null +++ b/.history/module/config/character_20241210075630.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHLLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "pain", + label: "LETHALFANTASY.Character.pain.label" + } +}) diff --git a/.history/module/config/character_20241210173254.mjs b/.history/module/config/character_20241210173254.mjs new file mode 100644 index 0000000..708c98c --- /dev/null +++ b/.history/module/config/character_20241210173254.mjs @@ -0,0 +1,76 @@ +export const CHARACTERISTICS = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Label.str" + }, + int: { + id: "int", + label: "LETHALFANTASY.Character.int.label" + }, + wis: { + id: "wis", + label: "LETHALFANTASY.Character.wis.label" + }, + dex: { + id: "dex", + label: "LETHALFANTASY.Character.dex.label" + }, + con: { + id: "con", + label: "LETHALFANTASY.Character.con.label" + }, + cha: { + id: "cha", + label: "LETHALFANTASY.Character.cha.label" + }, + luc: { + id: "luc", + label: "LETHALFANTASY.Character.luc.label" + }, + app: { + id: "app", + label: "LETHALFANTASY.Character.app.label" + }, +}) + +export const CHALLENGES = Object.freeze({ + str: { + id: "str", + label: "LETHALFANTASY.Character.str.label" + }, + agility: { + id: "agility", + label: "LETHALFANTASY.Character.agility.label" + }, + dying: { + id: "dying", + label: "LETHALFANTASY.Character.dying.label" + } +}) + +export const SAVES = Object.freeze({ + will: { + id: "will", + label: "LETHALFANTASY.Character.will.label" + }, + dodge: { + id: "dodge", + label: "LETHALFANTASY.Character.dodge.label" + }, + toughness: { + id: "toughness", + label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "pain", + label: "LETHALFANTASY.Character.pain.label" + } +}) diff --git a/.history/module/config/characteristic-tables_20241208161354.mjs b/.history/module/config/characteristic-tables_20241208161354.mjs new file mode 100644 index 0000000..e69de29 diff --git a/.history/module/config/characteristic-tables_20241208161403.mjs b/.history/module/config/characteristic-tables_20241208161403.mjs new file mode 100644 index 0000000..1f5d640 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161403.mjs @@ -0,0 +1 @@ +export \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161404.mjs b/.history/module/config/characteristic-tables_20241208161404.mjs new file mode 100644 index 0000000..42151f0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161404.mjs @@ -0,0 +1 @@ +export \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161410.mjs b/.history/module/config/characteristic-tables_20241208161410.mjs new file mode 100644 index 0000000..f2d24e7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161410.mjs @@ -0,0 +1,3 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161416.mjs b/.history/module/config/characteristic-tables_20241208161416.mjs new file mode 100644 index 0000000..b8fe858 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161416.mjs @@ -0,0 +1,3 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161418.mjs b/.history/module/config/characteristic-tables_20241208161418.mjs new file mode 100644 index 0000000..3aab5ab --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161418.mjs @@ -0,0 +1,5 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161422.mjs b/.history/module/config/characteristic-tables_20241208161422.mjs new file mode 100644 index 0000000..f935927 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161422.mjs @@ -0,0 +1,5 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "STR": {} +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161426.mjs b/.history/module/config/characteristic-tables_20241208161426.mjs new file mode 100644 index 0000000..b2c6d77 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161426.mjs @@ -0,0 +1,5 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": {} +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161427.mjs b/.history/module/config/characteristic-tables_20241208161427.mjs new file mode 100644 index 0000000..3571346 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161427.mjs @@ -0,0 +1,5 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161447.mjs b/.history/module/config/characteristic-tables_20241208161447.mjs new file mode 100644 index 0000000..647528a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161447.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161448.mjs b/.history/module/config/characteristic-tables_20241208161448.mjs new file mode 100644 index 0000000..647528a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161448.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161450.mjs b/.history/module/config/characteristic-tables_20241208161450.mjs new file mode 100644 index 0000000..647528a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161450.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161451.mjs b/.history/module/config/characteristic-tables_20241208161451.mjs new file mode 100644 index 0000000..647528a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161451.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161452.mjs b/.history/module/config/characteristic-tables_20241208161452.mjs new file mode 100644 index 0000000..647528a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161452.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161501.mjs b/.history/module/config/characteristic-tables_20241208161501.mjs new file mode 100644 index 0000000..f32c0ef --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161501.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161535.mjs b/.history/module/config/characteristic-tables_20241208161535.mjs new file mode 100644 index 0000000..d042b53 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161535.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF value": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF value": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF value": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF value": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF value": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF value": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF value": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF value": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF value": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF value": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF value": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF value": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF value": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF value": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF value": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF value": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF value": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF value": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF value": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161544.mjs b/.history/module/config/characteristic-tables_20241208161544.mjs new file mode 100644 index 0000000..f32c0ef --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161544.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "STRENGTH": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "STRENGTH": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "STRENGTH": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "STRENGTH": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "STRENGTH": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "STRENGTH": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "STRENGTH": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "STRENGTH": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "STRENGTH": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "STRENGTH": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "STRENGTH": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "STRENGTH": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "STRENGTH": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "STRENGTH": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "STRENGTH": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "STRENGTH": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "STRENGTH": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "STRENGTH": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "STRENGTH": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "STRENGTH": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "STRENGTH": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "STRENGTH": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "STRENGTH": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "STRENGTH": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "STRENGTH": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161557.mjs b/.history/module/config/characteristic-tables_20241208161557.mjs new file mode 100644 index 0000000..813c5f3 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161557.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "DAMAGE MODIFIER": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "DAMAGE MODIFIER": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "DAMAGE MODIFIER": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "DAMAGE MODIFIER": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "DAMAGE MODIFIER": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "DAMAGE MODIFIER": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "DAMAGE MODIFIER": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "DAMAGE MODIFIER": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "DAMAGE MODIFIER": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "DAMAGE MODIFIER": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "DAMAGE MODIFIER": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "DAMAGE MODIFIER": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "DAMAGE MODIFIER": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "DAMAGE MODIFIER": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "DAMAGE MODIFIER": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "DAMAGE MODIFIER": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "DAMAGE MODIFIER": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "DAMAGE MODIFIER": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "DAMAGE MODIFIER": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "DAMAGE MODIFIER": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "DAMAGE MODIFIER": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161607.mjs b/.history/module/config/characteristic-tables_20241208161607.mjs new file mode 100644 index 0000000..16419a1 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161607.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "ATTACK MODIFIER": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "ATTACK MODIFIER": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "ATTACK MODIFIER": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "ATTACK MODIFIER": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "ATTACK MODIFIER": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "ATTACK MODIFIER": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "ATTACK MODIFIER": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "ATTACK MODIFIER": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "ATTACK MODIFIER": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "ATTACK MODIFIER": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "ATTACK MODIFIER": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161620.mjs b/.history/module/config/characteristic-tables_20241208161620.mjs new file mode 100644 index 0000000..f1ddd55 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161620.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "CHALLENGE OF STRENGTH": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "CHALLENGE OF STRENGTH": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "CHALLENGE OF STRENGTH": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "CHALLENGE OF STRENGTH": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "CHALLENGE OF STRENGTH": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "CHALLENGE OF STRENGTH": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "CHALLENGE OF STRENGTH": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "CHALLENGE OF STRENGTH": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "CHALLENGE OF STRENGTH": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "CHALLENGE OF STRENGTH": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "CHALLENGE OF STRENGTH": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "CHALLENGE OF STRENGTH": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "CHALLENGE OF STRENGTH": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "CHALLENGE OF STRENGTH": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "CHALLENGE OF STRENGTH": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "CHALLENGE OF STRENGTH": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "CHALLENGE OF STRENGTH": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "CHALLENGE OF STRENGTH": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "CHALLENGE OF STRENGTH": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161629.mjs b/.history/module/config/characteristic-tables_20241208161629.mjs new file mode 100644 index 0000000..df442ff --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161629.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "AETHER POINTS": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "AETHER POINTS": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "AETHER POINTS": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "AETHER POINTS": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "AETHER POINTS": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "AETHER POINTS": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "AETHER POINTS": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "AETHER POINTS": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "AETHER POINTS": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "AETHER POINTS": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "AETHER POINTS": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "AETHER POINTS": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "AETHER POINTS": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "AETHER POINTS": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "AETHER POINTS": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "AETHER POINTS": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "AETHER POINTS": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "AETHER POINTS": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161643.mjs b/.history/module/config/characteristic-tables_20241208161643.mjs new file mode 100644 index 0000000..7dc4445 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161643.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "HIT POINTS": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "HIT POINTS": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "HIT POINTS": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "HIT POINTS": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "HIT POINTS": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "HIT POINTS": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "HIT POINTS": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "HIT POINTS": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "HIT POINTS": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "HIT POINTS": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "HIT POINTS": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "HIT POINTS": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "HIT POINTS": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "HIT POINTS": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "HIT POINTS": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "HIT POINTS": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "HIT POINTS": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "HIT POINTS": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "HIT POINTS": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161653.mjs b/.history/module/config/characteristic-tables_20241208161653.mjs new file mode 100644 index 0000000..7574c67 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161653.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "ENCUMBERED": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "ENCUMBERED": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "ENCUMBERED": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "ENCUMBERED": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "ENCUMBERED": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "ENCUMBERED": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "ENCUMBERED": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "ENCUMBERED": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "ENCUMBERED": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "ENCUMBERED": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "ENCUMBERED": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "ENCUMBERED": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "ENCUMBERED": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "ENCUMBERED": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "ENCUMBERED": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "ENCUMBERED": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "ENCUMBERED": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "ENCUMBERED": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "ENCUMBERED": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "ENCUMBERED": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161701.mjs b/.history/module/config/characteristic-tables_20241208161701.mjs new file mode 100644 index 0000000..17aaaf7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161701.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "LIFT": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "LIFT": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "LIFT": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "LIFT": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "LIFT": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "LIFT": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "LIFT": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "LIFT": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "LIFT": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "LIFT": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "LIFT": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "LIFT": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "LIFT": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "LIFT": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "LIFT": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "LIFT": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "LIFT": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "LIFT": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "LIFT": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "LIFT": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "LIFT": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "LIFT": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "LIFT": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "LIFT": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "LIFT": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161708.mjs b/.history/module/config/characteristic-tables_20241208161708.mjs new file mode 100644 index 0000000..da8a442 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161708.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "PUSH/DRAG": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "PUSH/DRAG": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "PUSH/DRAG": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "PUSH/DRAG": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "PUSH/DRAG": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "PUSH/DRAG": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "PUSH/DRAG": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "PUSH/DRAG": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "PUSH/DRAG": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "PUSH/DRAG": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "PUSH/DRAG": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "PUSH/DRAG": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "PUSH/DRAG": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "PUSH/DRAG": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "PUSH/DRAG": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "PUSH/DRAG": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "PUSH/DRAG": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "PUSH/DRAG": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "PUSH/DRAG": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "PUSH/DRAG": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "PUSH/DRAG": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "PUSH/DRAG": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "PUSH/DRAG": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "PUSH/DRAG": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "PUSH/DRAG": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161721.mjs b/.history/module/config/characteristic-tables_20241208161721.mjs new file mode 100644 index 0000000..2ffc843 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161721.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161722.mjs b/.history/module/config/characteristic-tables_20241208161722.mjs new file mode 100644 index 0000000..2ffc843 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161722.mjs @@ -0,0 +1,281 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161731.mjs b/.history/module/config/characteristic-tables_20241208161731.mjs new file mode 100644 index 0000000..84c21e1 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161731.mjs @@ -0,0 +1,282 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis" +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161811.mjs b/.history/module/config/characteristic-tables_20241208161811.mjs new file mode 100644 index 0000000..525fa7a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161811.mjs @@ -0,0 +1,282 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161812.mjs b/.history/module/config/characteristic-tables_20241208161812.mjs new file mode 100644 index 0000000..16800c0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161812.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "INTELLIGENCE": 1, + "ATTACK": -5, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 2, + "ATTACK": -4, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 3, + "ATTACK": -3, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 4, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 5, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 6, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 7, + "ATTACK": -1, + "DEFENSE": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 8, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 9, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 10, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 11, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 12, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 13, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 14, + "ATTACK": 1, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 15, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 16, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 17, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 18, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "INTELLIGENCE": 19, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "INTELLIGENCE": 20, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "INTELLIGENCE": 21, + "ATTACK": 4, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 22, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 23, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "INTELLIGENCE": 24, + "ATTACK": 5, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "INTELLIGENCE": 25, + "ATTACK": 5, + "DEFENSE": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161821.mjs b/.history/module/config/characteristic-tables_20241208161821.mjs new file mode 100644 index 0000000..3d6879b --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161821.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "INTELLIGENCE": 1, + "ATTACK": -5, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 2, + "ATTACK": -4, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 3, + "ATTACK": -3, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 4, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 5, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 6, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 7, + "ATTACK": -1, + "DEFENSE": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 8, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 9, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 10, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 11, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 12, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 13, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 14, + "ATTACK": 1, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 15, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 16, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 17, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 18, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "INTELLIGENCE": 19, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "INTELLIGENCE": 20, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "INTELLIGENCE": 21, + "ATTACK": 4, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 22, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 23, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + },lue + { + "INTELLIGENCE": 24, + "ATTACK": 5, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "INTELLIGENCE": 25, + "ATTACK": 5, + "DEFENSE": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161822.mjs b/.history/module/config/characteristic-tables_20241208161822.mjs new file mode 100644 index 0000000..16800c0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161822.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "INTELLIGENCE": 1, + "ATTACK": -5, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 2, + "ATTACK": -4, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "INTELLIGENCE": 3, + "ATTACK": -3, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 4, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "INTELLIGENCE": 5, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 6, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "INTELLIGENCE": 7, + "ATTACK": -1, + "DEFENSE": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 8, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "INTELLIGENCE": 9, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 10, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 11, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "INTELLIGENCE": 12, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 13, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "INTELLIGENCE": 14, + "ATTACK": 1, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 15, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "INTELLIGENCE": 16, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 17, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "INTELLIGENCE": 18, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "INTELLIGENCE": 19, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "INTELLIGENCE": 20, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "INTELLIGENCE": 21, + "ATTACK": 4, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 22, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "INTELLIGENCE": 23, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "INTELLIGENCE": 24, + "ATTACK": 5, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "INTELLIGENCE": 25, + "ATTACK": 5, + "DEFENSE": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161827.mjs b/.history/module/config/characteristic-tables_20241208161827.mjs new file mode 100644 index 0000000..bc2e049 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161827.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "ATTACK": -5, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "ATTACK": -4, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "ATTACK": -3, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "ATTACK": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "ATTACK": -1, + "DEFENSE": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "ATTACK": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "ATTACK": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "ATTACK": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "ATTACK": 1, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "ATTACK": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "ATTACK": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "ATTACK": 4, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "ATTACK": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "ATTACK": 5, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "ATTACK": 5, + "DEFENSE": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161835.mjs b/.history/module/config/characteristic-tables_20241208161835.mjs new file mode 100644 index 0000000..8ad5345 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161835.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "DEFENSE": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "DEFENSE": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "DEFENSE": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "DEFENSE": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "DEFENSE": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "DEFENSE": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "DEFENSE": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "DEFENSE": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161841.mjs b/.history/module/config/characteristic-tables_20241208161841.mjs new file mode 100644 index 0000000..3cbe3bb --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161841.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "DEVELOPMENT POINTS": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161852.mjs b/.history/module/config/characteristic-tables_20241208161852.mjs new file mode 100644 index 0000000..1f5fca6 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161852.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "DEVELOPMENT POINTS": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "DEVELOPMENT POINTS": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "DEVELOPMENT POINTS": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "DEVELOPMENT POINTS": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "DEVELOPMENT POINTS": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "DEVELOPMENT POINTS": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "DEVELOPMENT POINTS": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "DEVELOPMENT POINTS": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "DEVELOPMENT POINTS": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "DEVELOPMENT POINTS": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "DEVELOPMENT POINTS": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "DEVELOPMENT POINTS": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "DEVELOPMENT POINTS": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161854.mjs b/.history/module/config/characteristic-tables_20241208161854.mjs new file mode 100644 index 0000000..5e440ad --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161854.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "AETHER": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "AETHER": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "AETHER": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "AETHER": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "AETHER": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "AETHER": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "AETHER": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "AETHER": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "AETHER": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "AETHER": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "AETHER": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "AETHER": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "AETHER": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "AETHER": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "AETHER": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "AETHER": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "AETHER": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "AETHER": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "AETHER": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "AETHER": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "AETHER": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "AETHER": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "AETHER": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "AETHER": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161902.mjs b/.history/module/config/characteristic-tables_20241208161902.mjs new file mode 100644 index 0000000..ec15d5d --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161902.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "SPELL COGNITION": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "SPELL COGNITION": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "SPELL COGNITION": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "SPELL COGNITION": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "SPELL COGNITION": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "SPELL COGNITION": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "SPELL COGNITION": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "SPELL COGNITION": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "SPELL COGNITION": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "SPELL COGNITION": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "SPELL COGNITION": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "SPELL COGNITION": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "SPELL COGNITION": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "SPELL COGNITION": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "SPELL COGNITION": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "SPELL COGNITION": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "SPELL COGNITION": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "SPELL COGNITION": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "SPELL COGNITION": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "SPELL COGNITION": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "SPELL COGNITION": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "SPELL COGNITION": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "SPELL COGNITION": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "SPELL COGNITION": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161913.mjs b/.history/module/config/characteristic-tables_20241208161913.mjs new file mode 100644 index 0000000..a68e832 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161913.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "ARKANE CASTING MOD": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "ARKANE CASTING MOD": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "ARKANE CASTING MOD": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "ARKANE CASTING MOD": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "ARKANE CASTING MOD": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "ARKANE CASTING MOD": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "ARKANE CASTING MOD": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "ARKANE CASTING MOD": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "ARKANE CASTING MOD": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "ARKANE CASTING MOD": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "ARKANE CASTING MOD": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "ARKANE CASTING MOD": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "ARKANE CASTING MOD": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "ARKANE CASTING MOD": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "ARKANE CASTING MOD": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "ARKANE CASTING MOD": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "ARKANE CASTING MOD": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "ARKANE CASTING MOD": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "ARKANE CASTING MOD": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "ARKANE CASTING MOD": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "ARKANE CASTING MOD": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "ARKANE CASTING MOD": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "ARKANE CASTING MOD": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "ARKANE CASTING MOD": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161929.mjs b/.history/module/config/characteristic-tables_20241208161929.mjs new file mode 100644 index 0000000..fb3d753 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161929.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161955.mjs b/.history/module/config/characteristic-tables_20241208161955.mjs new file mode 100644 index 0000000..59f93f6 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161955.mjs @@ -0,0 +1,508 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208161958.mjs b/.history/module/config/characteristic-tables_20241208161958.mjs new file mode 100644 index 0000000..8b341fb --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208161958.mjs @@ -0,0 +1,509 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con" +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162000.mjs b/.history/module/config/characteristic-tables_20241208162000.mjs new file mode 100644 index 0000000..7649ae3 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162000.mjs @@ -0,0 +1,509 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162001.mjs b/.history/module/config/characteristic-tables_20241208162001.mjs new file mode 100644 index 0000000..d46086a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162001.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "CONSTITUTION": 1, + "": "", + "Hit Points ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "CONSTITUTION": 2, + "": "", + "Hit Points ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "CONSTITUTION": 3, + "": "", + "Hit Points ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "CONSTITUTION": 4, + "": "", + "Hit Points ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "CONSTITUTION": 5, + "": "", + "Hit Points ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "CONSTITUTION": 6, + "": "", + "Hit Points ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "CONSTITUTION": 7, + "": "", + "Hit Points ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "CONSTITUTION": 8, + "": "", + "Hit Points ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "CONSTITUTION": 9, + "": "", + "Hit Points ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "CONSTITUTION": 10, + "": "", + "Hit Points ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "CONSTITUTION": 11, + "": "", + "Hit Points ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 12, + "": "", + "Hit Points ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 13, + "": "", + "Hit Points ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 14, + "": "", + "Hit Points ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "CONSTITUTION": 15, + "": "", + "Hit Points ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "CONSTITUTION": 16, + "": "", + "Hit Points ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "CONSTITUTION": 17, + "": "", + "Hit Points ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "CONSTITUTION": 18, + "": "", + "Hit Points ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "CONSTITUTION": 19, + "": "", + "Hit Points ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "CONSTITUTION": 20, + "": "", + "Hit Points ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "CONSTITUTION": 21, + "": "", + "Hit Points ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "CONSTITUTION": 22, + "": "", + "Hit Points ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "CONSTITUTION": 23, + "": "", + "Hit Points ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONSTITUTION": 24, + "": "", + "Hit Points ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONSTITUTION": 25, + "": "", + "Hit Points ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162006.mjs b/.history/module/config/characteristic-tables_20241208162006.mjs new file mode 100644 index 0000000..75de19c --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162006.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "CONSTITUTION": 1, + "": "", + "Hit Points ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "CONSTITUTION": 2, + "": "", + "Hit Points ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "CONSTITUTION": 3, + "": "", + "Hit Points ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "CONSTITUTION": 4, + "": "", + "Hit Points ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "CONSTITUTION": 5, + "": "", + "Hit Points ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "CONSTITUTION": 6, + "": "", + "Hit Points ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "CONSTITUTION": 7, + "": "", + "Hit Points ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "CONSTITUTION": 8, + "": "", + "Hit Points ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "CONSTITUTION": 9, + "": "", + "Hit Points ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "CONSTITUTION": 10, + "": "", + "Hit Points ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "CONSTITUTION": 11, + "": "", + "Hit Points ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 12, + "": "", + "Hit Points ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 13, + "": "", + "Hit Points ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "CONSTITUTION": 14, + "": "", + "Hit Points ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "CONSTITUTION": 15, + "": "", + "Hit Points ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "CONSTITUTION": 16, + "": "", + "Hit Points ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "CONSTITUTION": 17, + "": "", + "Hit Points ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "CONSTITUTION": 18, + "": "", + "Hit Points ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "CONSTITUTION": 19, + "": "", + "Hit Points ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "CONSTITUTION": 20, + "": "", + "Hit Points ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "CONSTITUTION": 21, + "": "", + "Hit Points ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "CONSTITUTION": 22, + "": "", + "Hit Points ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "CONSTITUTION": 23, + "": "", + "Hit Points ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONSTITUTION": 24, + "": "", + "Hit Points ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + "": "", + "Hit Points ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162010.mjs b/.history/module/config/characteristic-tables_20241208162010.mjs new file mode 100644 index 0000000..e847f2e --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162010.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + "": "", + "Hit Points ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + "": "", + "Hit Points ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + "": "", + "Hit Points ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + "": "", + "Hit Points ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + "": "", + "Hit Points ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + "": "", + "Hit Points ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + "": "", + "Hit Points ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + "": "", + "Hit Points ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + "": "", + "Hit Points ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + "": "", + "Hit Points ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + "": "", + "Hit Points ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + "": "", + "Hit Points ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + "": "", + "Hit Points ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + "": "", + "Hit Points ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + "": "", + "Hit Points ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + "": "", + "Hit Points ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + "": "", + "Hit Points ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + "": "", + "Hit Points ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + "": "", + "Hit Points ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + "": "", + "Hit Points ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + "": "", + "Hit Points ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + "": "", + "Hit Points ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + "": "", + "Hit Points ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + "": "", + "Hit Points ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + "": "", + "Hit Points ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162020.mjs b/.history/module/config/characteristic-tables_20241208162020.mjs new file mode 100644 index 0000000..79f461d --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162020.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "Hit Points ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "Hit Points ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "Hit Points ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "Hit Points ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "Hit Points ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "Hit Points ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "Hit Points ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "Hit Points ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "Hit Points ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "Hit Points ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "Hit Points ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "Hit Points ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "Hit Points ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "Hit Points ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "Hit Points ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "Hit Points ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "Hit Points ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "Hit Points ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "Hit Points ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "Hit Points ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "Hit Points ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "Hit Points ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "Hit Points ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "Hit Points ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "Hit Points ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162027.mjs b/.history/module/config/characteristic-tables_20241208162027.mjs new file mode 100644 index 0000000..8e13c93 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162027.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162030.mjs b/.history/module/config/characteristic-tables_20241208162030.mjs new file mode 100644 index 0000000..8e13c93 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162030.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "Aether points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "Aether points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "Aether points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "Aether points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "Aether points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "Aether points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "Aether points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "Aether points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "Aether points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "Aether points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "Aether points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "Aether points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "Aether points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "Aether points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "Aether points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "Aether points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "Aether points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "Aether points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "Aether points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "Aether points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "Aether points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "Aether points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "Aether points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "Aether points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162042.mjs b/.history/module/config/characteristic-tables_20241208162042.mjs new file mode 100644 index 0000000..a716e9f --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162042.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "Pain Save": 2, + "Toughness Save": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162109.mjs b/.history/module/config/characteristic-tables_20241208162109.mjs new file mode 100644 index 0000000..77b56ee --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162109.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "Pain Save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "Pain Save": 2, + "toughness_saave": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "Pain Save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "Pain Save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "Pain Save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "Pain Save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "Pain Save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "Pain Save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "Pain Save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "Pain Save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "Pain Save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "Pain Save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "Pain Save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "Pain Save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "Pain Save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "Pain Save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "Pain Save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "Pain Save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "Pain Save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "Pain Save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "Pain Save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "Pain Save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162144.mjs b/.history/module/config/characteristic-tables_20241208162144.mjs new file mode 100644 index 0000000..71c4a41 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162144.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162149.mjs b/.history/module/config/characteristic-tables_20241208162149.mjs new file mode 100644 index 0000000..71c4a41 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162149.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "Toughness Save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "Toughness Save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "Toughness Save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "Toughness Save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "Toughness Save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "Toughness Save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "Toughness Save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "Toughness Save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "Toughness Save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "Toughness Save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "Toughness Save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "Toughness Save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "Toughness Save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "Toughness Save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "Toughness Save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "Toughness Save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "Toughness Save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "Toughness Save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "Toughness Save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "Toughness Save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162202.mjs b/.history/module/config/characteristic-tables_20241208162202.mjs new file mode 100644 index 0000000..c968a6f --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162202.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "Stabilization Dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "Stabilization Dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "Stabilization Dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "Stabilization Dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "Stabilization Dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162217.mjs b/.history/module/config/characteristic-tables_20241208162217.mjs new file mode 100644 index 0000000..f6b0e55 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162217.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "Base Pain Tolerance %": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "Base Pain Tolerance %": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "Base Pain Tolerance %": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "Base Pain Tolerance %": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "Base Pain Tolerance %": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "Base Pain Tolerance %": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "Base Pain Tolerance %": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "Base Pain Tolerance %": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "Base Pain Tolerance %": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "Base Pain Tolerance %": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162244.mjs b/.history/module/config/characteristic-tables_20241208162244.mjs new file mode 100644 index 0000000..a987d04 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162244.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162245.mjs b/.history/module/config/characteristic-tables_20241208162245.mjs new file mode 100644 index 0000000..a987d04 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162245.mjs @@ -0,0 +1,760 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +] +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162424.mjs b/.history/module/config/characteristic-tables_20241208162424.mjs new file mode 100644 index 0000000..bcbe266 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162424.mjs @@ -0,0 +1,761 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha" +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162426.mjs b/.history/module/config/characteristic-tables_20241208162426.mjs new file mode 100644 index 0000000..d0206fd --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162426.mjs @@ -0,0 +1,761 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha": +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162428.mjs b/.history/module/config/characteristic-tables_20241208162428.mjs new file mode 100644 index 0000000..e13b5ae --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162428.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +],[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] +"cha": +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162433.mjs b/.history/module/config/characteristic-tables_20241208162433.mjs new file mode 100644 index 0000000..e7fc81e --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162433.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +],[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162445.mjs b/.history/module/config/characteristic-tables_20241208162445.mjs new file mode 100644 index 0000000..9e81a77 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162445.mjs @@ -0,0 +1,938 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162446.mjs b/.history/module/config/characteristic-tables_20241208162446.mjs new file mode 100644 index 0000000..3811a49 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162446.mjs @@ -0,0 +1,938 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162447.mjs b/.history/module/config/characteristic-tables_20241208162447.mjs new file mode 100644 index 0000000..3811a49 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162447.mjs @@ -0,0 +1,938 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "CONST ITUTION": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162454.mjs b/.history/module/config/characteristic-tables_20241208162454.mjs new file mode 100644 index 0000000..2601d71 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162454.mjs @@ -0,0 +1,938 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162455.mjs b/.history/module/config/characteristic-tables_20241208162455.mjs new file mode 100644 index 0000000..a8ab1c7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162455.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "CHARISMA": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "CHARISMA": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "CHARISMA": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "CHARISMA": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "CHARISMA": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "CHARISMA": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "CHARISMA": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "CHARISMA": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162504.mjs b/.history/module/config/characteristic-tables_20241208162504.mjs new file mode 100644 index 0000000..1c13ada --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162504.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162508.mjs b/.history/module/config/characteristic-tables_20241208162508.mjs new file mode 100644 index 0000000..addce9f --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162508.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "rit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162509.mjs b/.history/module/config/characteristic-tables_20241208162509.mjs new file mode 100644 index 0000000..1c13ada --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162509.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "Grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "Grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "Grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "Grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "Grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "Grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "Grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "Grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "Grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "Grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "Grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "Grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "Grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "Grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "Grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "Grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "Grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "Grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "Grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "Grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "Grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "Grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "Grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "Grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162513.mjs b/.history/module/config/characteristic-tables_20241208162513.mjs new file mode 100644 index 0000000..0a7e612 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162513.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "grit": -4, + "Turning /Casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "grit": -4, + "Turning /Casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "grit": -3, + "Turning /Casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "grit": -3, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "grit": -2, + "Turning /Casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "grit": -2, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "grit": -1, + "Turning /Casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "grit": -1, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "grit": 0, + "Turning /Casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "grit": 0, + "Turning /Casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "grit": 1, + "Turning /Casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "grit": 2, + "Turning /Casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "grit": 4, + "Turning /Casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "grit": 6, + "Turning /Casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "grit": 8, + "Turning /Casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "grit": 10, + "Turning /Casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "grit": 11, + "Turning /Casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "grit": 12, + "Turning /Casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "grit": 13, + "Turning /Casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "grit": 14, + "Turning /Casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "grit": 15, + "Turning /Casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "grit": 16, + "Turning /Casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "grit": 18, + "Turning /Casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162523.mjs b/.history/module/config/characteristic-tables_20241208162523.mjs new file mode 100644 index 0000000..57b1e1b --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162523.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162535.mjs b/.history/module/config/characteristic-tables_20241208162535.mjs new file mode 100644 index 0000000..b67b98c --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162535.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "Development Points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "Development Points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "Development Points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "Development Points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "Development Points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "Development Points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "Development Points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "Development Points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "Development Points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "Development Points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "Development Points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "Development Points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "Development Points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "Development Points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "Development Points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162536.mjs b/.history/module/config/characteristic-tables_20241208162536.mjs new file mode 100644 index 0000000..e9a8ae1 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162536.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "Divine Miracle Bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "Divine Miracle Bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "Divine Miracle Bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "Divine Miracle Bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "Divine Miracle Bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "Divine Miracle Bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "Divine Miracle Bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "Divine Miracle Bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "Divine Miracle Bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "Divine Miracle Bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "Divine Miracle Bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "Divine Miracle Bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "Divine Miracle Bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "Divine Miracle Bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "Divine Miracle Bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162551.mjs b/.history/module/config/characteristic-tables_20241208162551.mjs new file mode 100644 index 0000000..b6ed84a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162551.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162552.mjs b/.history/module/config/characteristic-tables_20241208162552.mjs new file mode 100644 index 0000000..b6ed84a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162552.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162558.mjs b/.history/module/config/characteristic-tables_20241208162558.mjs new file mode 100644 index 0000000..b6ed84a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162558.mjs @@ -0,0 +1,937 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162639.mjs b/.history/module/config/characteristic-tables_20241208162639.mjs new file mode 100644 index 0000000..d4d8205 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162639.mjs @@ -0,0 +1,938 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc" + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162642.mjs b/.history/module/config/characteristic-tables_20241208162642.mjs new file mode 100644 index 0000000..fa8a57a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162642.mjs @@ -0,0 +1,1039 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "LUCK ": 1, + "Per level ": 0 + }, + { + "LUCK ": 2, + "Per level ": 0 + }, + { + "LUCK ": 3, + "Per level ": 1 + }, + { + "LUCK ": 4, + "Per level ": 2 + }, + { + "LUCK ": 5, + "Per level ": 3 + }, + { + "LUCK ": 6, + "Per level ": 4 + }, + { + "LUCK ": 7, + "Per level ": 5 + }, + { + "LUCK ": 8, + "Per level ": 6 + }, + { + "LUCK ": 9, + "Per level ": 7 + }, + { + "LUCK ": 10, + "Per level ": 8 + }, + { + "LUCK ": 11, + "Per level ": 9 + }, + { + "LUCK ": 12, + "Per level ": 10 + }, + { + "LUCK ": 13, + "Per level ": 11 + }, + { + "LUCK ": 14, + "Per level ": 12 + }, + { + "LUCK ": 15, + "Per level ": 13 + }, + { + "LUCK ": 16, + "Per level ": 14 + }, + { + "LUCK ": 17, + "Per level ": 15 + }, + { + "LUCK ": 18, + "Per level ": 16 + }, + { + "LUCK ": 19, + "Per level ": 18 + }, + { + "LUCK ": 20, + "Per level ": 20 + }, + { + "LUCK ": 21, + "Per level ": 22 + }, + { + "LUCK ": 22, + "Per level ": 24 + }, + { + "LUCK ": 23, + "Per level ": 26 + }, + { + "LUCK ": 24, + "Per level ": 28 + }, + { + "LUCK ": 25, + "Per level ": 30 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162657.mjs b/.history/module/config/characteristic-tables_20241208162657.mjs new file mode 100644 index 0000000..7a92379 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162657.mjs @@ -0,0 +1,1039 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "Per level ": 0 + }, + { + "value": 2, + "Per level ": 0 + }, + { + "value": 3, + "Per level ": 1 + }, + { + "value": 4, + "Per level ": 2 + }, + { + "value": 5, + "Per level ": 3 + }, + { + "value": 6, + "Per level ": 4 + }, + { + "value": 7, + "Per level ": 5 + }, + { + "value": 8, + "Per level ": 6 + }, + { + "value": 9, + "Per level ": 7 + }, + { + "value": 10, + "Per level ": 8 + }, + { + "value": 11, + "Per level ": 9 + }, + { + "value": 12, + "Per level ": 10 + }, + { + "value": 13, + "Per level ": 11 + }, + { + "value": 14, + "Per level ": 12 + }, + { + "value": 15, + "Per level ": 13 + }, + { + "value": 16, + "Per level ": 14 + }, + { + "value": 17, + "Per level ": 15 + }, + { + "value": 18, + "Per level ": 16 + }, + { + "value": 19, + "Per level ": 18 + }, + { + "value": 20, + "Per level ": 20 + }, + { + "value": 21, + "Per level ": 22 + }, + { + "value": 22, + "Per level ": 24 + }, + { + "value": 23, + "Per level ": 26 + }, + { + "value": 24, + "Per level ": 28 + }, + { + "value": 25, + "Per level ": 30 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162704.mjs b/.history/module/config/characteristic-tables_20241208162704.mjs new file mode 100644 index 0000000..fb939ad --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162704.mjs @@ -0,0 +1,1039 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162706.mjs b/.history/module/config/characteristic-tables_20241208162706.mjs new file mode 100644 index 0000000..fb939ad --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162706.mjs @@ -0,0 +1,1039 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162726.mjs b/.history/module/config/characteristic-tables_20241208162726.mjs new file mode 100644 index 0000000..1e510e8 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162726.mjs @@ -0,0 +1,1040 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis" + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162728.mjs b/.history/module/config/characteristic-tables_20241208162728.mjs new file mode 100644 index 0000000..3db4887 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162728.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "WISDOM": 1, + "Defense": -5, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 2, + "Defense": -4, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 3, + "Defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 4, + "Defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 5, + "Defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 6, + "Defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 7, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 8, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 9, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 10, + "Defense": 0, + "Init Cap": 18, + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 11, + "Defense": 0, + "Init Cap": 16, + "Development Points ": 1, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "WISDOM": 12, + "Defense": 1, + "Init Cap": 14, + "Development Points ": 2, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "WISDOM": 13, + "Defense": 1, + "Init Cap": 12, + "Development Points ": 3, + "Attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "WISDOM": 14, + "Defense": 1, + "Init Cap": 10, + "Development Points ": 4, + "Attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "WISDOM": 15, + "Defense": 2, + "Init Cap": 8, + "Development Points ": 5, + "Attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "WISDOM": 16, + "Defense": 2, + "Init Cap": 7, + "Development Points ": 7, + "Attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "WISDOM": 17, + "Defense": 2, + "Init Cap": 6, + "Development Points ": 9, + "Attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "WISDOM": 18, + "Defense": 3, + "Init Cap": 5, + "Development Points ": 11, + "Attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "WISDOM": 19, + "Defense": 3, + "Init Cap": 4, + "Development Points ": 13, + "Attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "WISDOM": 20, + "Defense": 3, + "Init Cap": 4, + "Development Points ": 15, + "Attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "WISDOM": 21, + "Defense": 4, + "Init Cap": 3, + "Development Points ": 18, + "Attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "WISDOM": 22, + "Defense": 4, + "Init Cap": 3, + "Development Points ": 21, + "Attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "WISDOM": 23, + "Defense": 4, + "Init Cap": 2, + "Development Points ": 24, + "Attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "WISDOM": 24, + "Defense": 4, + "Init Cap": 2, + "Development Points ": 27, + "Attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "WISDOM": 25, + "Defense": 5, + "Init Cap": 1, + "Development Points ": 30, + "Attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162739.mjs b/.history/module/config/characteristic-tables_20241208162739.mjs new file mode 100644 index 0000000..cbd8127 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162739.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "Defense": -5, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "Defense": -4, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "Defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "Defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "Defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "Defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "Defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "Defense": 0, + "Init Cap": 18, + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "Defense": 0, + "Init Cap": 16, + "Development Points ": 1, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "Defense": 1, + "Init Cap": 14, + "Development Points ": 2, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "Defense": 1, + "Init Cap": 12, + "Development Points ": 3, + "Attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "Defense": 1, + "Init Cap": 10, + "Development Points ": 4, + "Attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "Defense": 2, + "Init Cap": 8, + "Development Points ": 5, + "Attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "Defense": 2, + "Init Cap": 7, + "Development Points ": 7, + "Attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "Defense": 2, + "Init Cap": 6, + "Development Points ": 9, + "Attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "Defense": 3, + "Init Cap": 5, + "Development Points ": 11, + "Attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "Defense": 3, + "Init Cap": 4, + "Development Points ": 13, + "Attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "Defense": 3, + "Init Cap": 4, + "Development Points ": 15, + "Attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "Defense": 4, + "Init Cap": 3, + "Development Points ": 18, + "Attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "Defense": 4, + "Init Cap": 3, + "Development Points ": 21, + "Attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "Defense": 4, + "Init Cap": 2, + "Development Points ": 24, + "Attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "Defense": 4, + "Init Cap": 2, + "Development Points ": 27, + "Attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "Defense": 5, + "Init Cap": 1, + "Development Points ": 30, + "Attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162746.mjs b/.history/module/config/characteristic-tables_20241208162746.mjs new file mode 100644 index 0000000..bf2ec72 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162746.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "Init Cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "Init Cap": 18, + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "Init Cap": 16, + "Development Points ": 1, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "Init Cap": 14, + "Development Points ": 2, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "Init Cap": 12, + "Development Points ": 3, + "Attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "Init Cap": 10, + "Development Points ": 4, + "Attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "Init Cap": 8, + "Development Points ": 5, + "Attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "Init Cap": 7, + "Development Points ": 7, + "Attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "Init Cap": 6, + "Development Points ": 9, + "Attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "Init Cap": 5, + "Development Points ": 11, + "Attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "Init Cap": 4, + "Development Points ": 13, + "Attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "Init Cap": 4, + "Development Points ": 15, + "Attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "Init Cap": 3, + "Development Points ": 18, + "Attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "Init Cap": 3, + "Development Points ": 21, + "Attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "Init Cap": 2, + "Development Points ": 24, + "Attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "Init Cap": 2, + "Development Points ": 27, + "Attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "Init Cap": 1, + "Development Points ": 30, + "Attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162753.mjs b/.history/module/config/characteristic-tables_20241208162753.mjs new file mode 100644 index 0000000..22b829d --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162753.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "Development Points ": 0, + "Attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "Development Points ": 0, + "Attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "Development Points ": 0, + "Attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "Development Points ": 0, + "Attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "Development Points ": 0, + "Attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "Development Points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "Development Points ": 1, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "Development Points ": 2, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "Development Points ": 3, + "Attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "Development Points ": 4, + "Attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "Development Points ": 5, + "Attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "Development Points ": 7, + "Attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "Development Points ": 9, + "Attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "Development Points ": 11, + "Attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "Development Points ": 13, + "Attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "Development Points ": 15, + "Attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "Development Points ": 18, + "Attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "Development Points ": 21, + "Attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "Development Points ": 24, + "Attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "Development Points ": 27, + "Attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "Development Points ": 30, + "Attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162805.mjs b/.history/module/config/characteristic-tables_20241208162805.mjs new file mode 100644 index 0000000..a2fe3c8 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162805.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "Attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "Attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "Attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "Attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "Attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "Attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "Attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "Attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "Attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "Attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "Attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "Attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "Attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "Attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "Attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "Attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "Attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "Attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "Attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "Attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "Attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162810.mjs b/.history/module/config/characteristic-tables_20241208162810.mjs new file mode 100644 index 0000000..0d759db --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162810.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "Willpower Save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162820.mjs b/.history/module/config/characteristic-tables_20241208162820.mjs new file mode 100644 index 0000000..ee33e0a --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162820.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "Willpower Save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "Willpower Save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "Willpower Save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "Willpower Save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "Willpower Save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "Willpower Save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "Willpower Save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "Willpower Save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "Willpower Save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "Willpower Save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "Willpower Save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "Willpower Save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "Willpower Save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "Willpower Save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "Willpower Save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "Willpower Save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162821.mjs b/.history/module/config/characteristic-tables_20241208162821.mjs new file mode 100644 index 0000000..a7330c5 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162821.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "Divine Miracle Bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "Divine Miracle Bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "Divine Miracle Bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "Divine Miracle Bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "Divine Miracle Bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "Divine Miracle Bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "Divine Miracle Bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "Divine Miracle Bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "Divine Miracle Bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "Divine Miracle Bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "Divine Miracle Bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "Divine Miracle Bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208162835.mjs b/.history/module/config/characteristic-tables_20241208162835.mjs new file mode 100644 index 0000000..83dfed0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208162835.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163012.mjs b/.history/module/config/characteristic-tables_20241208163012.mjs new file mode 100644 index 0000000..83dfed0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163012.mjs @@ -0,0 +1,1291 @@ +import { CHARACTERISTICS } from "./character.mjs"; + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163217.mjs b/.history/module/config/characteristic-tables_20241208163217.mjs new file mode 100644 index 0000000..38aef40 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163217.mjs @@ -0,0 +1,1290 @@ + +export const CHARACTERISTICS_TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163335.mjs b/.history/module/config/characteristic-tables_20241208163335.mjs new file mode 100644 index 0000000..66570a8 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163335.mjs @@ -0,0 +1,1290 @@ + +export const CHARACTERISTICSTABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163337.mjs b/.history/module/config/characteristic-tables_20241208163337.mjs new file mode 100644 index 0000000..875cd26 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163337.mjs @@ -0,0 +1,1290 @@ + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163646.mjs b/.history/module/config/characteristic-tables_20241208163646.mjs new file mode 100644 index 0000000..0a19cec --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163646.mjs @@ -0,0 +1,1290 @@ + +export const MAJOR + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163647.mjs b/.history/module/config/characteristic-tables_20241208163647.mjs new file mode 100644 index 0000000..4570d1b --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163647.mjs @@ -0,0 +1,1291 @@ + +export const MAJ +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163651.mjs b/.history/module/config/characteristic-tables_20241208163651.mjs new file mode 100644 index 0000000..0140db3 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163651.mjs @@ -0,0 +1,1296 @@ + +export const MAJOR = {Str + Int + Wis + Dex + Con + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163706.mjs b/.history/module/config/characteristic-tables_20241208163706.mjs new file mode 100644 index 0000000..14a869c --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163706.mjs @@ -0,0 +1,1296 @@ + +export const MAJOR = {Str, + Int + Wis + Dex + Con + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163712.mjs b/.history/module/config/characteristic-tables_20241208163712.mjs new file mode 100644 index 0000000..30b3c37 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163712.mjs @@ -0,0 +1,1296 @@ + +export const MAJOR = {Str, + Int, + Wis, + Dex, + Con, + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163717.mjs b/.history/module/config/characteristic-tables_20241208163717.mjs new file mode 100644 index 0000000..c675ffa --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163717.mjs @@ -0,0 +1,1295 @@ + +export const MAJOR = {Str, Int, + Wis, + Dex, + Con, + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163719.mjs b/.history/module/config/characteristic-tables_20241208163719.mjs new file mode 100644 index 0000000..8eefc02 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163719.mjs @@ -0,0 +1,1294 @@ + +export const MAJOR = {Str, Int, , + Dex, + Con, + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163722.mjs b/.history/module/config/characteristic-tables_20241208163722.mjs new file mode 100644 index 0000000..bd25748 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163722.mjs @@ -0,0 +1,1294 @@ + +export const MAJOR = {Str, Int, Wis, Dex, Con, Cha} + Dex, + Con, + Cha} +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163728.mjs b/.history/module/config/characteristic-tables_20241208163728.mjs new file mode 100644 index 0000000..913f0d0 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163728.mjs @@ -0,0 +1,1291 @@ + +export const MAJOR = {Str, Int, Wis, Dex, Con, Cha} +sexport const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163730.mjs b/.history/module/config/characteristic-tables_20241208163730.mjs new file mode 100644 index 0000000..f0fbf06 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163730.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {Str, Int, Wis, Dex, Con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163733.mjs b/.history/module/config/characteristic-tables_20241208163733.mjs new file mode 100644 index 0000000..64ed10f --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163733.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, Int, Wis, Dex, Con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163735.mjs b/.history/module/config/characteristic-tables_20241208163735.mjs new file mode 100644 index 0000000..afd81c8 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163735.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, int, Wis, Dex, Con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163737.mjs b/.history/module/config/characteristic-tables_20241208163737.mjs new file mode 100644 index 0000000..846f6ea --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163737.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, int, wis, Dex, Con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163738.mjs b/.history/module/config/characteristic-tables_20241208163738.mjs new file mode 100644 index 0000000..f7ab44b --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163738.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, int, wis, dex, Con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163740.mjs b/.history/module/config/characteristic-tables_20241208163740.mjs new file mode 100644 index 0000000..d86b221 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163740.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, int, wis, dex, con, Cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163742.mjs b/.history/module/config/characteristic-tables_20241208163742.mjs new file mode 100644 index 0000000..d70dce6 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163742.mjs @@ -0,0 +1,1292 @@ + +export const MAJOR = {str, int, wis, dex, con, cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208163745.mjs b/.history/module/config/characteristic-tables_20241208163745.mjs new file mode 100644 index 0000000..04587f7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208163745.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {str, int, wis, dex, con, cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204026.mjs b/.history/module/config/characteristic-tables_20241208204026.mjs new file mode 100644 index 0000000..b74f7fe --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204026.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {"str," int, wis, dex, con, cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204027.mjs b/.history/module/config/characteristic-tables_20241208204027.mjs new file mode 100644 index 0000000..c50c416 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204027.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {"str"," int, wis, dex, con, cha} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204038.mjs b/.history/module/config/characteristic-tables_20241208204038.mjs new file mode 100644 index 0000000..0499c95 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204038.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {"str", "int", "wis", "dex", "con", "cha"} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204039.mjs b/.history/module/config/characteristic-tables_20241208204039.mjs new file mode 100644 index 0000000..0499c95 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204039.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {"str", "int", "wis", "dex", "con", "cha"} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204040.mjs b/.history/module/config/characteristic-tables_20241208204040.mjs new file mode 100644 index 0000000..0499c95 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204040.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = {"str", "int", "wis", "dex", "con", "cha"} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204043.mjs b/.history/module/config/characteristic-tables_20241208204043.mjs new file mode 100644 index 0000000..ec409bb --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204043.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = "str", "int", "wis", "dex", "con", "cha"} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204044.mjs b/.history/module/config/characteristic-tables_20241208204044.mjs new file mode 100644 index 0000000..5b0fa9e --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204044.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = ["str", "int", "wis", "dex", "con", "cha"} + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204045.mjs b/.history/module/config/characteristic-tables_20241208204045.mjs new file mode 100644 index 0000000..9eb9579 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204045.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = ["str", "int", "wis", "dex", "con", "cha" + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204046.mjs b/.history/module/config/characteristic-tables_20241208204046.mjs new file mode 100644 index 0000000..ffd77e7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204046.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = ["str", "int", "wis", "dex", "con", "cha"] + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204047.mjs b/.history/module/config/characteristic-tables_20241208204047.mjs new file mode 100644 index 0000000..ffd77e7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204047.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = ["str", "int", "wis", "dex", "con", "cha"] + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/characteristic-tables_20241208204048.mjs b/.history/module/config/characteristic-tables_20241208204048.mjs new file mode 100644 index 0000000..ffd77e7 --- /dev/null +++ b/.history/module/config/characteristic-tables_20241208204048.mjs @@ -0,0 +1,1293 @@ + + +export const MAJOR = ["str", "int", "wis", "dex", "con", "cha"] + +export const TABLES = { + "str": [ + { + "value": 1, + "damage_modifier": -7, + "attack_modifier": -4, + "challenge": -9, + "aether_points": -20, + "hp": -3, + "encumbered": 1, + "lift": 3, + "push_drag": 6 + }, + { + "value": 2, + "damage_modifier": -6, + "attack_modifier": -4, + "challenge": -8, + "aether_points": -20, + "hp": -2, + "encumbered": 1, + "lift": 4, + "push_drag": 8 + }, + { + "value": 3, + "damage_modifier": -5, + "attack_modifier": -3, + "challenge": -7, + "aether_points": -20, + "hp": -1, + "encumbered": 1, + "lift": 5, + "push_drag": 10 + }, + { + "value": 4, + "damage_modifier": -4, + "attack_modifier": -3, + "challenge": -6, + "aether_points": -20, + "hp": -1, + "encumbered": 2, + "lift": 6, + "push_drag": 12 + }, + { + "value": 5, + "damage_modifier": -3, + "attack_modifier": -2, + "challenge": -5, + "aether_points": -20, + "hp": 0, + "encumbered": 2, + "lift": 7, + "push_drag": 14 + }, + { + "value": 6, + "damage_modifier": -2, + "attack_modifier": -1, + "challenge": -4, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 8, + "push_drag": 16 + }, + { + "value": 7, + "damage_modifier": -2, + "attack_modifier": 0, + "challenge": -3, + "aether_points": -10, + "hp": 0, + "encumbered": 3, + "lift": 9, + "push_drag": 18 + }, + { + "value": 8, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -2, + "aether_points": 0, + "hp": 0, + "encumbered": 4, + "lift": 11, + "push_drag": 22 + }, + { + "value": 9, + "damage_modifier": -1, + "attack_modifier": 0, + "challenge": -1, + "aether_points": 0, + "hp": 0, + "encumbered": 5, + "lift": 12, + "push_drag": 24 + }, + { + "value": 10, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 6, + "lift": 13, + "push_drag": 26 + }, + { + "value": 11, + "damage_modifier": 0, + "attack_modifier": 0, + "challenge": 0, + "aether_points": 0, + "hp": 0, + "encumbered": 7, + "lift": 15, + "push_drag": 30 + }, + { + "value": 12, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 1, + "aether_points": 0, + "hp": 0, + "encumbered": 8, + "lift": 17, + "push_drag": 34 + }, + { + "value": 13, + "damage_modifier": 1, + "attack_modifier": 0, + "challenge": 2, + "aether_points": 0, + "hp": 0, + "encumbered": 9, + "lift": 20, + "push_drag": 40 + }, + { + "value": 14, + "damage_modifier": 2, + "attack_modifier": 1, + "challenge": 3, + "aether_points": 0, + "hp": 1, + "encumbered": 10, + "lift": 22, + "push_drag": 44 + }, + { + "value": 15, + "damage_modifier": 3, + "attack_modifier": 1, + "challenge": 4, + "aether_points": 0, + "hp": 2, + "encumbered": 11, + "lift": 24, + "push_drag": 48 + }, + { + "value": 16, + "damage_modifier": 4, + "attack_modifier": 2, + "challenge": 5, + "aether_points": 0, + "hp": 3, + "encumbered": 12, + "lift": 26, + "push_drag": 52 + }, + { + "value": 17, + "damage_modifier": 5, + "attack_modifier": 2, + "challenge": 6, + "aether_points": 10, + "hp": 4, + "encumbered": 13, + "lift": 28, + "push_drag": 56 + }, + { + "value": 18, + "damage_modifier": 6, + "attack_modifier": 3, + "challenge": 7, + "aether_points": 20, + "hp": 5, + "encumbered": 14, + "lift": 30, + "push_drag": 60 + }, + { + "value": 19, + "damage_modifier": 7, + "attack_modifier": 3, + "challenge": 8, + "aether_points": 20, + "hp": 6, + "encumbered": 15, + "lift": 31, + "push_drag": 62 + }, + { + "value": 20, + "damage_modifier": 8, + "attack_modifier": 4, + "challenge": 9, + "aether_points": 30, + "hp": 7, + "encumbered": 15, + "lift": 32, + "push_drag": 64 + }, + { + "value": 21, + "damage_modifier": 9, + "attack_modifier": 4, + "challenge": 10, + "aether_points": 30, + "hp": 8, + "encumbered": 16, + "lift": 33, + "push_drag": 66 + }, + { + "value": 22, + "damage_modifier": 10, + "attack_modifier": 5, + "challenge": 11, + "aether_points": 40, + "hp": 9, + "encumbered": 16, + "lift": 34, + "push_drag": 68 + }, + { + "value": 23, + "damage_modifier": 12, + "attack_modifier": 5, + "challenge": 12, + "aether_points": 40, + "hp": 10, + "encumbered": 17, + "lift": 35, + "push_drag": 70 + }, + { + "value": 24, + "damage_modifier": 14, + "attack_modifier": 5, + "challenge": 13, + "aether_points": 50, + "hp": 11, + "encumbered": 18, + "lift": 36, + "push_drag": 72 + }, + { + "value": 25, + "damage_modifier": 16, + "attack_modifier": 6, + "challenge": 14, + "aether_points": 60, + "hp": 12, + "encumbered": 19, + "lift": 38, + "push_drag": 76 + } +], +"wis": [ + { + "value": 1, + "attack": -5, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 2, + "attack": -4, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0, + "arkane_casting_mod": -4 + }, + { + "value": 3, + "attack": -3, + "defense": -3, + "development_points": 0, + "aether": -50, + "spell_cognition": 0.01, + "arkane_casting_mod": -3 + }, + { + "value": 4, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.05, + "arkane_casting_mod": -3 + }, + { + "value": 5, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -45, + "spell_cognition": 0.1, + "arkane_casting_mod": -2 + }, + { + "value": 6, + "attack": -2, + "defense": -2, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.15, + "arkane_casting_mod": -2 + }, + { + "value": 7, + "attack": -1, + "defense": -1, + "development_points": 0, + "aether": -40, + "spell_cognition": 0.2, + "arkane_casting_mod": -1 + }, + { + "value": 8, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.25, + "arkane_casting_mod": -1 + }, + { + "value": 9, + "attack": -1, + "defense": 0, + "development_points": 0, + "aether": -30, + "spell_cognition": 0.3, + "arkane_casting_mod": 0 + }, + { + "value": 10, + "attack": 0, + "defense": 0, + "development_points": 0, + "aether": -20, + "spell_cognition": 0.35, + "arkane_casting_mod": 0 + }, + { + "value": 11, + "attack": 0, + "defense": 0, + "development_points": 1, + "aether": -10, + "spell_cognition": 0.45, + "arkane_casting_mod": 0 + }, + { + "value": 12, + "attack": 1, + "defense": 0, + "development_points": 2, + "aether": 0, + "spell_cognition": 0.5, + "arkane_casting_mod": 1 + }, + { + "value": 13, + "attack": 1, + "defense": 0, + "development_points": 3, + "aether": 0, + "spell_cognition": 0.6, + "arkane_casting_mod": 1 + }, + { + "value": 14, + "attack": 1, + "defense": 1, + "development_points": 4, + "aether": 10, + "spell_cognition": 0.65, + "arkane_casting_mod": 2 + }, + { + "value": 15, + "attack": 2, + "defense": 1, + "development_points": 5, + "aether": 20, + "spell_cognition": 0.75, + "arkane_casting_mod": 2 + }, + { + "value": 16, + "attack": 2, + "defense": 1, + "development_points": 7, + "aether": 30, + "spell_cognition": 0.8, + "arkane_casting_mod": 3 + }, + { + "value": 17, + "attack": 2, + "defense": 1, + "development_points": 9, + "aether": 40, + "spell_cognition": 0.85, + "arkane_casting_mod": 3 + }, + { + "value": 18, + "attack": 3, + "defense": 2, + "development_points": 11, + "aether": 50, + "spell_cognition": 0.9, + "arkane_casting_mod": 4 + }, + { + "value": 19, + "attack": 3, + "defense": 2, + "development_points": 13, + "aether": 60, + "spell_cognition": 0.92, + "arkane_casting_mod": 5 + }, + { + "value": 20, + "attack": 3, + "defense": 2, + "development_points": 15, + "aether": 70, + "spell_cognition": 0.94, + "arkane_casting_mod": 6 + }, + { + "value": 21, + "attack": 4, + "defense": 2, + "development_points": 18, + "aether": 80, + "spell_cognition": 0.95, + "arkane_casting_mod": 7 + }, + { + "value": 22, + "attack": 4, + "defense": 3, + "development_points": 21, + "aether": 90, + "spell_cognition": 0.96, + "arkane_casting_mod": 7 + }, + { + "value": 23, + "attack": 4, + "defense": 3, + "development_points": 24, + "aether": 100, + "spell_cognition": 0.97, + "arkane_casting_mod": 8 + }, + { + "value": 24, + "attack": 5, + "defense": 3, + "development_points": 27, + "aether": 110, + "spell_cognition": 0.98, + "arkane_casting_mod": 8 + }, + { + "value": 25, + "attack": 5, + "defense": 4, + "development_points": 30, + "aether": 125, + "spell_cognition": 0.99, + "arkane_casting_mod": 9 + } +], +"con": [ + { + "value": 1, + + "hp ": 1, + "aether_points": -50, + "pain_save": 1, + "toughness_save": -5, + "stabilization_dice": "D6", + "base_pain_tolerance": 20 + }, + { + "value": 2, + + "hp ": 2, + "aether_points": -40, + "pain_save": 2, + "toughness_saave": -4, + "stabilization_dice": "D6", + "base_pain_tolerance": 21 + }, + { + "value": 3, + + "hp ": 3, + "aether_points": -35, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 22 + }, + { + "value": 4, + + "hp ": 4, + "aether_points": -30, + "pain_save": 2, + "toughness_save": -3, + "stabilization_dice": "D6", + "base_pain_tolerance": 23 + }, + { + "value": 5, + + "hp ": 5, + "aether_points": -25, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 24 + }, + { + "value": 6, + + "hp ": 6, + "aether_points": -20, + "pain_save": 3, + "toughness_save": -2, + "stabilization_dice": "D6", + "base_pain_tolerance": 26 + }, + { + "value": 7, + + "hp ": 7, + "aether_points": -15, + "pain_save": 3, + "toughness_save": -1, + "stabilization_dice": "D6", + "base_pain_tolerance": 28 + }, + { + "value": 8, + + "hp ": 8, + "aether_points": -10, + "pain_save": 4, + "toughness_save": -1, + "stabilization_dice": "D8", + "base_pain_tolerance": 29 + }, + { + "value": 9, + + "hp ": 9, + "aether_points": -5, + "pain_save": 4, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 10, + + "hp ": 10, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 30 + }, + { + "value": 11, + + "hp ": 11, + "aether_points": 0, + "pain_save": 5, + "toughness_save": 0, + "stabilization_dice": "D8", + "base_pain_tolerance": 31 + }, + { + "value": 12, + + "hp ": 12, + "aether_points": 5, + "pain_save": 6, + "toughness_save": 0, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 13, + + "hp ": 13, + "aether_points": 10, + "pain_save": 7, + "toughness_save": 1, + "stabilization_dice": "D10", + "base_pain_tolerance": 31 + }, + { + "value": 14, + + "hp ": 14, + "aether_points": 20, + "pain_save": 7, + "toughness_save": 2, + "stabilization_dice": "D10", + "base_pain_tolerance": 32 + }, + { + "value": 15, + + "hp ": 15, + "aether_points": 30, + "pain_save": 8, + "toughness_save": 3, + "stabilization_dice": "D12", + "base_pain_tolerance": 32 + }, + { + "value": 16, + + "hp ": 16, + "aether_points": 40, + "pain_save": 8, + "toughness_save": 4, + "stabilization_dice": "D12", + "base_pain_tolerance": 33 + }, + { + "value": 17, + + "hp ": 17, + "aether_points": 50, + "pain_save": 9, + "toughness_save": 5, + "stabilization_dice": "D12", + "base_pain_tolerance": 34 + }, + { + "value": 18, + + "hp ": 18, + "aether_points": 60, + "pain_save": 9, + "toughness_save": 6, + "stabilization_dice": "D12", + "base_pain_tolerance": 35 + }, + { + "value": 19, + + "hp ": 19, + "aether_points": 70, + "pain_save": 10, + "toughness_save": 7, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 20, + + "hp ": 20, + "aether_points": 80, + "pain_save": 10, + "toughness_save": 8, + "stabilization_dice": "D12", + "base_pain_tolerance": 36 + }, + { + "value": 21, + + "hp ": 21, + "aether_points": 90, + "pain_save": 11, + "toughness_save": 9, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 22, + + "hp ": 22, + "aether_points": 100, + "pain_save": 11, + "toughness_save": 10, + "stabilization_dice": "D20", + "base_pain_tolerance": 37 + }, + { + "value": 23, + + "hp ": 23, + "aether_points": 110, + "pain_save": 12, + "toughness_save": 11, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 24, + + "hp ": 24, + "aether_points": 120, + "pain_save": 12, + "toughness_save": 12, + "stabilization_dice": "D20", + "base_pain_tolerance": 38 + }, + { + "value": 25, + "hp ": 25, + "aether_points": 130, + "pain_save": 13, + "toughness_save": 13, + "stabilization_dice": "D20", + "base_pain_tolerance": 40 + } +], +"cha":[ + { + "value": 1, + "grit": -5, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 2, + "grit": -4, + "turning_casting": -4, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 3, + "grit": -4, + "turning_casting": -3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 4, + "grit": -3, + "turning_casting": 3, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 5, + "grit": -3, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 6, + "grit": -2, + "turning_casting": -2, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 7, + "grit": -2, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 8, + "grit": -1, + "turning_casting": -1, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 9, + "grit": -1, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 10, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 11, + "grit": 0, + "turning_casting": 0, + "development_points ": 0, + "divine_miracle_bonus": 0 + }, + { + "value": 12, + "grit": 0, + "turning_casting": 1, + "development_points ": 1, + "divine_miracle_bonus": 1 + }, + { + "value": 13, + "grit": 1, + "turning_casting": 1, + "development_points ": 2, + "divine_miracle_bonus": 1 + }, + { + "value": 14, + "grit": 2, + "turning_casting": 2, + "development_points ": 4, + "divine_miracle_bonus": 2 + }, + { + "value": 15, + "grit": 4, + "turning_casting": 2, + "development_points ": 6, + "divine_miracle_bonus": 2 + }, + { + "value": 16, + "grit": 6, + "turning_casting": 3, + "development_points ": 7, + "divine_miracle_bonus": 3 + }, + { + "value": 17, + "grit": 8, + "turning_casting": 3, + "development_points ": 8, + "divine_miracle_bonus": 3 + }, + { + "value": 18, + "grit": 10, + "turning_casting": 4, + "development_points ": 9, + "divine_miracle_bonus": 4 + }, + { + "value": 19, + "grit": 11, + "turning_casting": 5, + "development_points ": 10, + "divine_miracle_bonus": 5 + }, + { + "value": 20, + "grit": 12, + "turning_casting": 6, + "development_points ": 11, + "divine_miracle_bonus": 5 + }, + { + "value": 21, + "grit": 13, + "turning_casting": 7, + "development_points ": 12, + "divine_miracle_bonus": 5 + }, + { + "value": 22, + "grit": 14, + "turning_casting": 7, + "development_points ": 13, + "divine_miracle_bonus": 6 + }, + { + "value": 23, + "grit": 15, + "turning_casting": 8, + "development_points ": 14, + "divine_miracle_bonus": 6 + }, + { + "value": 24, + "grit": 16, + "turning_casting": 8, + "development_points ": 15, + "divine_miracle_bonus": 6 + }, + { + "value": 25, + "grit": 18, + "turning_casting": 9, + "development_points ": 16, + "divine_miracle_bonus": 7 + } +], +"luc": [ + { + "value": 1, + "per_level ": 0 + }, + { + "value": 2, + "per_level ": 0 + }, + { + "value": 3, + "per_level ": 1 + }, + { + "value": 4, + "per_level ": 2 + }, + { + "value": 5, + "per_level ": 3 + }, + { + "value": 6, + "per_level ": 4 + }, + { + "value": 7, + "per_level ": 5 + }, + { + "value": 8, + "per_level ": 6 + }, + { + "value": 9, + "per_level ": 7 + }, + { + "value": 10, + "per_level ": 8 + }, + { + "value": 11, + "per_level ": 9 + }, + { + "value": 12, + "per_level ": 10 + }, + { + "value": 13, + "per_level ": 11 + }, + { + "value": 14, + "per_level ": 12 + }, + { + "value": 15, + "per_level ": 13 + }, + { + "value": 16, + "per_level ": 14 + }, + { + "value": 17, + "per_level ": 15 + }, + { + "value": 18, + "per_level ": 16 + }, + { + "value": 19, + "per_level ": 18 + }, + { + "value": 20, + "per_level ": 20 + }, + { + "value": 21, + "per_level ": 22 + }, + { + "value": 22, + "per_level ": 24 + }, + { + "value": 23, + "per_level ": 26 + }, + { + "value": 24, + "per_level ": 28 + }, + { + "value": 25, + "per_level ": 30 + } +], +"wis": [ + { + "value": 1, + "defense": -5, + "init_cap": "-", + "development_points ": 0, + "attack ": -5, + "willpower_save": -5, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 2, + "defense": -4, + "init_cap": "-", + "development_points ": 0, + "attack ": -4, + "willpower_save": -4, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 3, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -3, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 4, + "defense": -3, + "init_cap": "-", + "development_points ": 0, + "attack ": -2, + "willpower_save": -3, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 5, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 1, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 6, + "defense": -2, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -2, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 7, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 8, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": -1, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 9, + "defense": -1, + "init_cap": "-", + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 10, + "defense": 0, + "init_cap": 18, + "development_points ": 0, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 11, + "defense": 0, + "init_cap": 16, + "development_points ": 1, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 0, + "": "" + }, + { + "value": 12, + "defense": 1, + "init_cap": 14, + "development_points ": 2, + "attack ": 0, + "willpower_save": 0, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 13, + "defense": 1, + "init_cap": 12, + "development_points ": 3, + "attack ": 0, + "willpower_save": 1, + "divine_miracle_bonus ": 1, + "": "" + }, + { + "value": 14, + "defense": 1, + "init_cap": 10, + "development_points ": 4, + "attack ": 1, + "willpower_save": 2, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 15, + "defense": 2, + "init_cap": 8, + "development_points ": 5, + "attack ": 1, + "willpower_save": 3, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 16, + "defense": 2, + "init_cap": 7, + "development_points ": 7, + "attack ": 1, + "willpower_save": 4, + "divine_miracle_bonus ": 2, + "": "" + }, + { + "value": 17, + "defense": 2, + "init_cap": 6, + "development_points ": 9, + "attack ": 1, + "willpower_save": 5, + "divine_miracle_bonus ": 3, + "": "" + }, + { + "value": 18, + "defense": 3, + "init_cap": 5, + "development_points ": 11, + "attack ": 2, + "willpower_save": 6, + "divine_miracle_bonus ": 4, + "": "" + }, + { + "value": 19, + "defense": 3, + "init_cap": 4, + "development_points ": 13, + "attack ": 2, + "willpower_save": 7, + "divine_miracle_bonus ": 5, + "": "" + }, + { + "value": 20, + "defense": 3, + "init_cap": 4, + "development_points ": 15, + "attack ": 2, + "willpower_save": 8, + "divine_miracle_bonus ": 6, + "": "" + }, + { + "value": 21, + "defense": 4, + "init_cap": 3, + "development_points ": 18, + "attack ": 2, + "willpower_save": 9, + "divine_miracle_bonus ": 7, + "": "" + }, + { + "value": 22, + "defense": 4, + "init_cap": 3, + "development_points ": 21, + "attack ": 2, + "willpower_save": 10, + "divine_miracle_bonus ": 8, + "": "" + }, + { + "value": 23, + "defense": 4, + "init_cap": 2, + "development_points ": 24, + "attack ": 3, + "willpower_save": 11, + "divine_miracle_bonus ": 9, + "": "" + }, + { + "value": 24, + "defense": 4, + "init_cap": 2, + "development_points ": 27, + "attack ": 3, + "willpower_save": 12, + "divine_miracle_bonus ": 10, + "": "" + }, + { + "value": 25, + "defense": 5, + "init_cap": 1, + "development_points ": 30, + "attack ": 4, + "willpower_save": 13, + "divine_miracle_bonus ": 12, + "": "" + } +] + +} \ No newline at end of file diff --git a/.history/module/config/system_20241207230457.mjs b/.history/module/config/system_20241207230457.mjs new file mode 100644 index 0000000..ba9d9a0 --- /dev/null +++ b/.history/module/config/system_20241207230457.mjs @@ -0,0 +1,90 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const DICE_VALUE = Object.freeze({ + D4: "d4", + D6: "d6", + D8: "d8", + D10: "d10", + D12: "d12", +}) + +export const DICE_VALUES = ["0", "d4", "d6", "d8", "d10", "d12"] + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + SKILL_CATEGORY: SKILL.CATEGORY, + ARMOR_TYPE: ARMOR.TYPE, + EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY, + SPELL_RANGE: SPELL.RANGE, + WEAPON_TYPE: WEAPON.WEAPON_TYPE, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208155651.mjs b/.history/module/config/system_20241208155651.mjs new file mode 100644 index 0000000..4d15efb --- /dev/null +++ b/.history/module/config/system_20241208155651.mjs @@ -0,0 +1,91 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const DICE_VALUE = Object.freeze({ + D4: "d4", + D6: "d6", + D8: "d8", + D10: "d10", + D12: "d12", +}) + +export const DICE_VALUES = ["0", "d4", "d6", "d8", "d10", "d12"] + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + SKILL_CATEGORY: SKILL.CATEGORY, + ARMOR_TYPE: ARMOR.TYPE, + EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY, + SPELL_RANGE: SPELL.RANGE, + WEAPON_TYPE: WEAPON.WEAPON_TYPE, + + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208155652.mjs b/.history/module/config/system_20241208155652.mjs new file mode 100644 index 0000000..d1ecc27 --- /dev/null +++ b/.history/module/config/system_20241208155652.mjs @@ -0,0 +1,91 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const DICE_VALUE = Object.freeze({ + D4: "d4", + D6: "d6", + D8: "d8", + D10: "d10", + D12: "d12", +}) + +export const DICE_VALUES = ["0", "d4", "d6", "d8", "d10", "d12"] + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208161331.mjs b/.history/module/config/system_20241208161331.mjs new file mode 100644 index 0000000..707dadf --- /dev/null +++ b/.history/module/config/system_20241208161331.mjs @@ -0,0 +1,89 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const DICE_VALUE = Object.freeze({ + D4: "d4", + D6: "d6", + D8: "d8", + D10: "d10", + D12: "d12", +}) + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208161335.mjs b/.history/module/config/system_20241208161335.mjs new file mode 100644 index 0000000..1547706 --- /dev/null +++ b/.history/module/config/system_20241208161335.mjs @@ -0,0 +1,81 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208161336.mjs b/.history/module/config/system_20241208161336.mjs new file mode 100644 index 0000000..1547706 --- /dev/null +++ b/.history/module/config/system_20241208161336.mjs @@ -0,0 +1,81 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208161341.mjs b/.history/module/config/system_20241208161341.mjs new file mode 100644 index 0000000..1547706 --- /dev/null +++ b/.history/module/config/system_20241208161341.mjs @@ -0,0 +1,81 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163232.mjs b/.history/module/config/system_20241208163232.mjs new file mode 100644 index 0000000..bebfb51 --- /dev/null +++ b/.history/module/config/system_20241208163232.mjs @@ -0,0 +1,81 @@ +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 +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163236.mjs b/.history/module/config/system_20241208163236.mjs new file mode 100644 index 0000000..0883825 --- /dev/null +++ b/.history/module/config/system_20241208163236.mjs @@ -0,0 +1,81 @@ +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 +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163237.mjs b/.history/module/config/system_20241208163237.mjs new file mode 100644 index 0000000..9425743 --- /dev/null +++ b/.history/module/config/system_20241208163237.mjs @@ -0,0 +1,81 @@ +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 CHA +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163239.mjs b/.history/module/config/system_20241208163239.mjs new file mode 100644 index 0000000..3953333 --- /dev/null +++ b/.history/module/config/system_20241208163239.mjs @@ -0,0 +1,81 @@ +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 "./characteristics.mjs" +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163243.mjs b/.history/module/config/system_20241208163243.mjs new file mode 100644 index 0000000..23cd58f --- /dev/null +++ b/.history/module/config/system_20241208163243.mjs @@ -0,0 +1,81 @@ +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 "./characteristics-tables.mjs" +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163245.mjs b/.history/module/config/system_20241208163245.mjs new file mode 100644 index 0000000..3791ef3 --- /dev/null +++ b/.history/module/config/system_20241208163245.mjs @@ -0,0 +1,82 @@ +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 "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163247.mjs b/.history/module/config/system_20241208163247.mjs new file mode 100644 index 0000000..3791ef3 --- /dev/null +++ b/.history/module/config/system_20241208163247.mjs @@ -0,0 +1,82 @@ +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 "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163248.mjs b/.history/module/config/system_20241208163248.mjs new file mode 100644 index 0000000..3791ef3 --- /dev/null +++ b/.history/module/config/system_20241208163248.mjs @@ -0,0 +1,82 @@ +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 "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163253.mjs b/.history/module/config/system_20241208163253.mjs new file mode 100644 index 0000000..6b9d310 --- /dev/null +++ b/.history/module/config/system_20241208163253.mjs @@ -0,0 +1,82 @@ +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 CHARACTERISTICSCHAR_TABLES from "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163259.mjs b/.history/module/config/system_20241208163259.mjs new file mode 100644 index 0000000..95fcc75 --- /dev/null +++ b/.history/module/config/system_20241208163259.mjs @@ -0,0 +1,82 @@ +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 SYSTABLES from "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163300.mjs b/.history/module/config/system_20241208163300.mjs new file mode 100644 index 0000000..95fcc75 --- /dev/null +++ b/.history/module/config/system_20241208163300.mjs @@ -0,0 +1,82 @@ +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 SYSTABLES from "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163301.mjs b/.history/module/config/system_20241208163301.mjs new file mode 100644 index 0000000..95fcc75 --- /dev/null +++ b/.history/module/config/system_20241208163301.mjs @@ -0,0 +1,82 @@ +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 SYSTABLES from "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163304.mjs b/.history/module/config/system_20241208163304.mjs new file mode 100644 index 0000000..9df09b0 --- /dev/null +++ b/.history/module/config/system_20241208163304.mjs @@ -0,0 +1,82 @@ +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 CHAR from "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163306.mjs b/.history/module/config/system_20241208163306.mjs new file mode 100644 index 0000000..3791ef3 --- /dev/null +++ b/.history/module/config/system_20241208163306.mjs @@ -0,0 +1,82 @@ +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 "./characteristics-tables.mjs" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163314.mjs b/.history/module/config/system_20241208163314.mjs new file mode 100644 index 0000000..56bc237 --- /dev/null +++ b/.history/module/config/system_20241208163314.mjs @@ -0,0 +1,82 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163315.mjs b/.history/module/config/system_20241208163315.mjs new file mode 100644 index 0000000..56bc237 --- /dev/null +++ b/.history/module/config/system_20241208163315.mjs @@ -0,0 +1,82 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163322.mjs b/.history/module/config/system_20241208163322.mjs new file mode 100644 index 0000000..a4b46dd --- /dev/null +++ b/.history/module/config/system_20241208163322.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163323.mjs b/.history/module/config/system_20241208163323.mjs new file mode 100644 index 0000000..b31c5aa --- /dev/null +++ b/.history/module/config/system_20241208163323.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + CHARACTERISTICS_TABLES: CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163324.mjs b/.history/module/config/system_20241208163324.mjs new file mode 100644 index 0000000..b31c5aa --- /dev/null +++ b/.history/module/config/system_20241208163324.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + CHARACTERISTICS_TABLES: CHARACTERISTICS, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163327.mjs b/.history/module/config/system_20241208163327.mjs new file mode 100644 index 0000000..56f1dc7 --- /dev/null +++ b/.history/module/config/system_20241208163327.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + CHARACTERISTICS_TABLES: CHARACTERISTICS., + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163328.mjs b/.history/module/config/system_20241208163328.mjs new file mode 100644 index 0000000..ef9967c --- /dev/null +++ b/.history/module/config/system_20241208163328.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 ASCII = ` +······················································································································ +: : +:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ : +:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ : +:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! : +:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: : +:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: : +: : +······················································································································ +` + +/** + * Include all constant definitions within the SYSTEM global export + * @type {Object} + */ +export const SYSTEM = { + id: SYSTEM_ID, + CHARACTERISTICS: CHARACTER.CHARACTERISTICS, + CHARACTERISTICS_TABLES: CHARACTERISTICS. + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163330.mjs b/.history/module/config/system_20241208163330.mjs new file mode 100644 index 0000000..7f530c7 --- /dev/null +++ b/.history/module/config/system_20241208163330.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163331.mjs b/.history/module/config/system_20241208163331.mjs new file mode 100644 index 0000000..7f530c7 --- /dev/null +++ b/.history/module/config/system_20241208163331.mjs @@ -0,0 +1,83 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163752.mjs b/.history/module/config/system_20241208163752.mjs new file mode 100644 index 0000000..894fa72 --- /dev/null +++ b/.history/module/config/system_20241208163752.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163755.mjs b/.history/module/config/system_20241208163755.mjs new file mode 100644 index 0000000..e2e543c --- /dev/null +++ b/.history/module/config/system_20241208163755.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + CHA + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163757.mjs b/.history/module/config/system_20241208163757.mjs new file mode 100644 index 0000000..54edd7a --- /dev/null +++ b/.history/module/config/system_20241208163757.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + CHARA + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163758.mjs b/.history/module/config/system_20241208163758.mjs new file mode 100644 index 0000000..b126778 --- /dev/null +++ b/.history/module/config/system_20241208163758.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + CHARACTER + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163804.mjs b/.history/module/config/system_20241208163804.mjs new file mode 100644 index 0000000..b8a758d --- /dev/null +++ b/.history/module/config/system_20241208163804.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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_MAJ + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163805.mjs b/.history/module/config/system_20241208163805.mjs new file mode 100644 index 0000000..902dd15 --- /dev/null +++ b/.history/module/config/system_20241208163805.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, s + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163806.mjs b/.history/module/config/system_20241208163806.mjs new file mode 100644 index 0000000..902dd15 --- /dev/null +++ b/.history/module/config/system_20241208163806.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, s + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241208163807.mjs b/.history/module/config/system_20241208163807.mjs new file mode 100644 index 0000000..573dac8 --- /dev/null +++ b/.history/module/config/system_20241208163807.mjs @@ -0,0 +1,84 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + SAVES: CHARACTER.SAVES, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241210075418.mjs b/.history/module/config/system_20241210075418.mjs new file mode 100644 index 0000000..6b38f2e --- /dev/null +++ b/.history/module/config/system_20241210075418.mjs @@ -0,0 +1,85 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241210075422.mjs b/.history/module/config/system_20241210075422.mjs new file mode 100644 index 0000000..6b38f2e --- /dev/null +++ b/.history/module/config/system_20241210075422.mjs @@ -0,0 +1,85 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + 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, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241217070425.mjs b/.history/module/config/system_20241217070425.mjs new file mode 100644 index 0000000..736e267 --- /dev/null +++ b/.history/module/config/system_20241217070425.mjs @@ -0,0 +1,86 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + 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, + WEAPON.COMBAT_PROGRESSION_DICE + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241217070432.mjs b/.history/module/config/system_20241217070432.mjs new file mode 100644 index 0000000..e8ae4b3 --- /dev/null +++ b/.history/module/config/system_20241217070432.mjs @@ -0,0 +1,86 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + 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: WEAPON.COMBAT_PROGRESSION_DICE + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/system_20241217070434.mjs b/.history/module/config/system_20241217070434.mjs new file mode 100644 index 0000000..9ed5a0f --- /dev/null +++ b/.history/module/config/system_20241217070434.mjs @@ -0,0 +1,86 @@ +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" + +export const SYSTEM_ID = "fvtt-lethal-fantasy" +export const DEV_MODE = false + +export const ROLL_TYPE = Object.freeze({ + SAVE: "save", + RESOURCE: "resource", + DAMAGE: "damage", + ATTACK: "attack", +}) + +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 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, + 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: WEAPON.COMBAT_PROGRESSION_DICE, + MONEY, + ASCII, + ROLL_TYPE, + DEV_MODE, +} diff --git a/.history/module/config/weapon_20241207230317.mjs b/.history/module/config/weapon_20241207230317.mjs new file mode 100644 index 0000000..f68f810 --- /dev/null +++ b/.history/module/config/weapon_20241207230317.mjs @@ -0,0 +1,6 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + diff --git a/.history/module/config/weapon_20241208155340.mjs b/.history/module/config/weapon_20241208155340.mjs new file mode 100644 index 0000000..ef89b07 --- /dev/null +++ b/.history/module/config/weapon_20241208155340.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export conso WEAPON_CLASS = { + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155343.mjs b/.history/module/config/weapon_20241208155343.mjs new file mode 100644 index 0000000..9876cbb --- /dev/null +++ b/.history/module/config/weapon_20241208155343.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155345.mjs b/.history/module/config/weapon_20241208155345.mjs new file mode 100644 index 0000000..bd0d1d4 --- /dev/null +++ b/.history/module/config/weapon_20241208155345.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + Weapon Class +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155348.mjs b/.history/module/config/weapon_20241208155348.mjs new file mode 100644 index 0000000..05ccdc5 --- /dev/null +++ b/.history/module/config/weapon_20241208155348.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155354.mjs b/.history/module/config/weapon_20241208155354.mjs new file mode 100644 index 0000000..0334950 --- /dev/null +++ b/.history/module/config/weapon_20241208155354.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155356.mjs b/.history/module/config/weapon_20241208155356.mjs new file mode 100644 index 0000000..cccb867 --- /dev/null +++ b/.history/module/config/weapon_20241208155356.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155357.mjs b/.history/module/config/weapon_20241208155357.mjs new file mode 100644 index 0000000..cccb867 --- /dev/null +++ b/.history/module/config/weapon_20241208155357.mjs @@ -0,0 +1,9 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155358.mjs b/.history/module/config/weapon_20241208155358.mjs new file mode 100644 index 0000000..2955092 --- /dev/null +++ b/.history/module/config/weapon_20241208155358.mjs @@ -0,0 +1,10 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155400.mjs b/.history/module/config/weapon_20241208155400.mjs new file mode 100644 index 0000000..a915d0a --- /dev/null +++ b/.history/module/config/weapon_20241208155400.mjs @@ -0,0 +1,10 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155414.mjs b/.history/module/config/weapon_20241208155414.mjs new file mode 100644 index 0000000..10a9fdf --- /dev/null +++ b/.history/module/config/weapon_20241208155414.mjs @@ -0,0 +1,11 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155416.mjs b/.history/module/config/weapon_20241208155416.mjs new file mode 100644 index 0000000..bc791ec --- /dev/null +++ b/.history/module/config/weapon_20241208155416.mjs @@ -0,0 +1,11 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "med" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155418.mjs b/.history/module/config/weapon_20241208155418.mjs new file mode 100644 index 0000000..44bc9d8 --- /dev/null +++ b/.history/module/config/weapon_20241208155418.mjs @@ -0,0 +1,12 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblades": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155421.mjs b/.history/module/config/weapon_20241208155421.mjs new file mode 100644 index 0000000..759550e --- /dev/null +++ b/.history/module/config/weapon_20241208155421.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblades": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axes": "LETHALFANTASY.Weapon.WeaponClass.axes", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155431.mjs b/.history/module/config/weapon_20241208155431.mjs new file mode 100644 index 0000000..e6e9dfd --- /dev/null +++ b/.history/module/config/weapon_20241208155431.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblades": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axes": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammers" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155433.mjs b/.history/module/config/weapon_20241208155433.mjs new file mode 100644 index 0000000..298457d --- /dev/null +++ b/.history/module/config/weapon_20241208155433.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblades": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblades": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblades": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axes": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammers": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155438.mjs b/.history/module/config/weapon_20241208155438.mjs new file mode 100644 index 0000000..58d57ea --- /dev/null +++ b/.history/module/config/weapon_20241208155438.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axes": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammers": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155440.mjs b/.history/module/config/weapon_20241208155440.mjs new file mode 100644 index 0000000..b654624 --- /dev/null +++ b/.history/module/config/weapon_20241208155440.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammers": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155441.mjs b/.history/module/config/weapon_20241208155441.mjs new file mode 100644 index 0000000..904d615 --- /dev/null +++ b/.history/module/config/weapon_20241208155441.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblades", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155444.mjs b/.history/module/config/weapon_20241208155444.mjs new file mode 100644 index 0000000..8ccae50 --- /dev/null +++ b/.history/module/config/weapon_20241208155444.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblades", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblades", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axes", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155447.mjs b/.history/module/config/weapon_20241208155447.mjs new file mode 100644 index 0000000..9c673b7 --- /dev/null +++ b/.history/module/config/weapon_20241208155447.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155449.mjs b/.history/module/config/weapon_20241208155449.mjs new file mode 100644 index 0000000..9c673b7 --- /dev/null +++ b/.history/module/config/weapon_20241208155449.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammers", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155453.mjs b/.history/module/config/weapon_20241208155453.mjs new file mode 100644 index 0000000..252eb84 --- /dev/null +++ b/.history/module/config/weapon_20241208155453.mjs @@ -0,0 +1,13 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155454.mjs b/.history/module/config/weapon_20241208155454.mjs new file mode 100644 index 0000000..fb39dd0 --- /dev/null +++ b/.history/module/config/weapon_20241208155454.mjs @@ -0,0 +1,14 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155502.mjs b/.history/module/config/weapon_20241208155502.mjs new file mode 100644 index 0000000..51f2949 --- /dev/null +++ b/.history/module/config/weapon_20241208155502.mjs @@ -0,0 +1,14 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155508.mjs b/.history/module/config/weapon_20241208155508.mjs new file mode 100644 index 0000000..244cb17 --- /dev/null +++ b/.history/module/config/weapon_20241208155508.mjs @@ -0,0 +1,15 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155510.mjs b/.history/module/config/weapon_20241208155510.mjs new file mode 100644 index 0000000..2f5e0a2 --- /dev/null +++ b/.history/module/config/weapon_20241208155510.mjs @@ -0,0 +1,15 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "fla" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155518.mjs b/.history/module/config/weapon_20241208155518.mjs new file mode 100644 index 0000000..0e39d1b --- /dev/null +++ b/.history/module/config/weapon_20241208155518.mjs @@ -0,0 +1,15 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155520.mjs b/.history/module/config/weapon_20241208155520.mjs new file mode 100644 index 0000000..9d38dba --- /dev/null +++ b/.history/module/config/weapon_20241208155520.mjs @@ -0,0 +1,16 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155526.mjs b/.history/module/config/weapon_20241208155526.mjs new file mode 100644 index 0000000..e8332c6 --- /dev/null +++ b/.history/module/config/weapon_20241208155526.mjs @@ -0,0 +1,16 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155528.mjs b/.history/module/config/weapon_20241208155528.mjs new file mode 100644 index 0000000..a1ae89f --- /dev/null +++ b/.history/module/config/weapon_20241208155528.mjs @@ -0,0 +1,16 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155534.mjs b/.history/module/config/weapon_20241208155534.mjs new file mode 100644 index 0000000..d166d59 --- /dev/null +++ b/.history/module/config/weapon_20241208155534.mjs @@ -0,0 +1,18 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "slingshot": "LETHALFANTASY.Weapon.WeaponClass.slingshot", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155536.mjs b/.history/module/config/weapon_20241208155536.mjs new file mode 100644 index 0000000..41e6ac8 --- /dev/null +++ b/.history/module/config/weapon_20241208155536.mjs @@ -0,0 +1,18 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "slingshot": "LETHALFANTASY.Weapon.WeaponClass.sling", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155540.mjs b/.history/module/config/weapon_20241208155540.mjs new file mode 100644 index 0000000..7225691 --- /dev/null +++ b/.history/module/config/weapon_20241208155540.mjs @@ -0,0 +1,18 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155549.mjs b/.history/module/config/weapon_20241208155549.mjs new file mode 100644 index 0000000..506f9da --- /dev/null +++ b/.history/module/config/weapon_20241208155549.mjs @@ -0,0 +1,19 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "th" + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155551.mjs b/.history/module/config/weapon_20241208155551.mjs new file mode 100644 index 0000000..e1396c4 --- /dev/null +++ b/.history/module/config/weapon_20241208155551.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155557.mjs b/.history/module/config/weapon_20241208155557.mjs new file mode 100644 index 0000000..ea3b0e7 --- /dev/null +++ b/.history/module/config/weapon_20241208155557.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "pole" + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155559.mjs b/.history/module/config/weapon_20241208155559.mjs new file mode 100644 index 0000000..6b34d17 --- /dev/null +++ b/.history/module/config/weapon_20241208155559.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155608.mjs b/.history/module/config/weapon_20241208155608.mjs new file mode 100644 index 0000000..e3d65ef --- /dev/null +++ b/.history/module/config/weapon_20241208155608.mjs @@ -0,0 +1,21 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155609.mjs b/.history/module/config/weapon_20241208155609.mjs new file mode 100644 index 0000000..55b3fc0 --- /dev/null +++ b/.history/module/config/weapon_20241208155609.mjs @@ -0,0 +1,21 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155610.mjs b/.history/module/config/weapon_20241208155610.mjs new file mode 100644 index 0000000..7c0f369 --- /dev/null +++ b/.history/module/config/weapon_20241208155610.mjs @@ -0,0 +1,21 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" + +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155611.mjs b/.history/module/config/weapon_20241208155611.mjs new file mode 100644 index 0000000..553588a --- /dev/null +++ b/.history/module/config/weapon_20241208155611.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155612.mjs b/.history/module/config/weapon_20241208155612.mjs new file mode 100644 index 0000000..553588a --- /dev/null +++ b/.history/module/config/weapon_20241208155612.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155640.mjs b/.history/module/config/weapon_20241208155640.mjs new file mode 100644 index 0000000..553588a --- /dev/null +++ b/.history/module/config/weapon_20241208155640.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155641.mjs b/.history/module/config/weapon_20241208155641.mjs new file mode 100644 index 0000000..553588a --- /dev/null +++ b/.history/module/config/weapon_20241208155641.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241208155642.mjs b/.history/module/config/weapon_20241208155642.mjs new file mode 100644 index 0000000..553588a --- /dev/null +++ b/.history/module/config/weapon_20241208155642.mjs @@ -0,0 +1,20 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070347.mjs b/.history/module/config/weapon_20241217070347.mjs new file mode 100644 index 0000000..bf577e5 --- /dev/null +++ b/.history/module/config/weapon_20241217070347.mjs @@ -0,0 +1,23 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + +} +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070351.mjs b/.history/module/config/weapon_20241217070351.mjs new file mode 100644 index 0000000..ed10016 --- /dev/null +++ b/.history/module/config/weapon_20241217070351.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "LETHALFANTASY.Weapon.CombatProgressionDice.d4", + "d6": "LETHALFANTASY.Weapon.CombatProgressionDice.d6", + "d8": "LETHALFANTASY.Weapon.CombatProgressionDice.d8", + "d10": "LETHALFANTASY.Weapon.CombatProgressionDice.d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070352.mjs b/.history/module/config/weapon_20241217070352.mjs new file mode 100644 index 0000000..ed10016 --- /dev/null +++ b/.history/module/config/weapon_20241217070352.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "LETHALFANTASY.Weapon.CombatProgressionDice.d4", + "d6": "LETHALFANTASY.Weapon.CombatProgressionDice.d6", + "d8": "LETHALFANTASY.Weapon.CombatProgressionDice.d8", + "d10": "LETHALFANTASY.Weapon.CombatProgressionDice.d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070357.mjs b/.history/module/config/weapon_20241217070357.mjs new file mode 100644 index 0000000..2912a9c --- /dev/null +++ b/.history/module/config/weapon_20241217070357.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "LETHALFANTASY.Weapon.CombatProgressionDice.d6", + "d8": "LETHALFANTASY.Weapon.CombatProgressionDice.d8", + "d10": "LETHALFANTASY.Weapon.CombatProgressionDice.d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070400.mjs b/.history/module/config/weapon_20241217070400.mjs new file mode 100644 index 0000000..baf6837 --- /dev/null +++ b/.history/module/config/weapon_20241217070400.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "LETHALFANTASY.Weapon.CombatProgressionDice.d8", + "d10": "LETHALFANTASY.Weapon.CombatProgressionDice.d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070403.mjs b/.history/module/config/weapon_20241217070403.mjs new file mode 100644 index 0000000..34f8603 --- /dev/null +++ b/.history/module/config/weapon_20241217070403.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "d8", + "d10": "LETHALFANTASY.Weapon.CombatProgressionDice.d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070406.mjs b/.history/module/config/weapon_20241217070406.mjs new file mode 100644 index 0000000..351a9b2 --- /dev/null +++ b/.history/module/config/weapon_20241217070406.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "d8", + "d10": "d10", + "d12": "LETHALFANTASY.Weapon.CombatProgressionDice.d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070409.mjs b/.history/module/config/weapon_20241217070409.mjs new file mode 100644 index 0000000..432ca5a --- /dev/null +++ b/.history/module/config/weapon_20241217070409.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "d8", + "d10": "d10", + "d12": "d12", + "d20": "LETHALFANTASY.Weapon.CombatProgressionDice.d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/config/weapon_20241217070412.mjs b/.history/module/config/weapon_20241217070412.mjs new file mode 100644 index 0000000..0fc250f --- /dev/null +++ b/.history/module/config/weapon_20241217070412.mjs @@ -0,0 +1,29 @@ + +export const WEAPON_TYPE = { + "melee": "LETHALFANTASY.Weapon.WeaponType.melee", + "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" +} + +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "d8", + "d10": "d10", + "d12": "d12", + "d20": "d20" +} + +export const WEAPON_CLASS = { + "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", + "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", + "mediumblade": "LETHALFANTASY.Weapon.WeaponClass.mediumblade", + "axe": "LETHALFANTASY.Weapon.WeaponClass.axe", + "hammer": "LETHALFANTASY.Weapon.WeaponClass.hammer", + "mace": "LETHALFANTASY.Weapon.WeaponClass.mace", + "flail": "LETHALFANTASY.Weapon.WeaponClass.flail", + "bow": "LETHALFANTASY.Weapon.WeaponClass.bow", + "sling": "LETHALFANTASY.Weapon.WeaponClass.sling", + "thrown": "LETHALFANTASY.Weapon.WeaponClass.thrown", + "polearm": "LETHALFANTASY.Weapon.WeaponClass.polearm", + "unarmed" : "LETHALFANTASY.Weapon.WeaponClass.unarmed" +} \ No newline at end of file diff --git a/.history/module/documents/item_20241206134814.mjs b/.history/module/documents/item_20241206134814.mjs new file mode 100644 index 0000000..3b4a582 --- /dev/null +++ b/.history/module/documents/item_20241206134814.mjs @@ -0,0 +1,19 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231729.mjs b/.history/module/documents/item_20241209231729.mjs new file mode 100644 index 0000000..125f9bc --- /dev/null +++ b/.history/module/documents/item_20241209231729.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231731.mjs b/.history/module/documents/item_20241209231731.mjs new file mode 100644 index 0000000..5d0489b --- /dev/null +++ b/.history/module/documents/item_20241209231731.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231733.mjs b/.history/module/documents/item_20241209231733.mjs new file mode 100644 index 0000000..84f4593 --- /dev/null +++ b/.history/module/documents/item_20241209231733.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + mira +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231735.mjs b/.history/module/documents/item_20241209231735.mjs new file mode 100644 index 0000000..1974452 --- /dev/null +++ b/.history/module/documents/item_20241209231735.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231739.mjs b/.history/module/documents/item_20241209231739.mjs new file mode 100644 index 0000000..ce9f0c3 --- /dev/null +++ b/.history/module/documents/item_20241209231739.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp", +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231740.mjs b/.history/module/documents/item_20241209231740.mjs new file mode 100644 index 0000000..4e0151e --- /dev/null +++ b/.history/module/documents/item_20241209231740.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241209231806.mjs b/.history/module/documents/item_20241209231806.mjs new file mode 100644 index 0000000..4e0151e --- /dev/null +++ b/.history/module/documents/item_20241209231806.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241217065944.mjs b/.history/module/documents/item_20241217065944.mjs new file mode 100644 index 0000000..0be7646 --- /dev/null +++ b/.history/module/documents/item_20241217065944.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + vulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241217065947.mjs b/.history/module/documents/item_20241217065947.mjs new file mode 100644 index 0000000..6e1bceb --- /dev/null +++ b/.history/module/documents/item_20241217065947.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + vulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_vulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/documents/item_20241217065948.mjs b/.history/module/documents/item_20241217065948.mjs new file mode 100644 index 0000000..6e1bceb --- /dev/null +++ b/.history/module/documents/item_20241217065948.mjs @@ -0,0 +1,20 @@ +export const defaultItemImg = { + weapon: "systems/fvtt-lethal-fantasy/assets/icons/icon_weapon.webp", + armor: "systems/fvtt-lethal-fantasy/assets/icons/icon_armor.webp", + equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", + skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", + gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", + vulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_vulnerability.webp", + shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", + spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", + miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" +} + +export default class LethalFantasyItem extends Item { + constructor(data, context) { + if (!data.img) { + data.img = defaultItemImg[data.type]; + } + super(data, context); + } +} diff --git a/.history/module/models/_module_20241201145936.mjs b/.history/module/models/_module_20241201145936.mjs new file mode 100644 index 0000000..f6af99a --- /dev/null +++ b/.history/module/models/_module_20241201145936.mjs @@ -0,0 +1,11 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" diff --git a/.history/module/models/_module_20241209151101.mjs b/.history/module/models/_module_20241209151101.mjs new file mode 100644 index 0000000..898449d --- /dev/null +++ b/.history/module/models/_module_20241209151101.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" + diff --git a/.history/module/models/_module_20241209151102.mjs b/.history/module/models/_module_20241209151102.mjs new file mode 100644 index 0000000..fe0f8c3 --- /dev/null +++ b/.history/module/models/_module_20241209151102.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" +export { default as LethalFantasyMiracle } from "./miracle.mjs" diff --git a/.history/module/models/_module_20241210070822.mjs b/.history/module/models/_module_20241210070822.mjs new file mode 100644 index 0000000..ba701cd --- /dev/null +++ b/.history/module/models/_module_20241210070822.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" +export { default as LethalFantasyMiracle } from "./miracle.mjs"w diff --git a/.history/module/models/_module_20241210070823.mjs b/.history/module/models/_module_20241210070823.mjs new file mode 100644 index 0000000..fe0f8c3 --- /dev/null +++ b/.history/module/models/_module_20241210070823.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" +export { default as LethalFantasyMiracle } from "./miracle.mjs" diff --git a/.history/module/models/_module_20241210070825.mjs b/.history/module/models/_module_20241210070825.mjs new file mode 100644 index 0000000..fe0f8c3 --- /dev/null +++ b/.history/module/models/_module_20241210070825.mjs @@ -0,0 +1,12 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasySave } from "./save.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" +export { default as LethalFantasyMiracle } from "./miracle.mjs" diff --git a/.history/module/models/_module_20241210071429.mjs b/.history/module/models/_module_20241210071429.mjs new file mode 100644 index 0000000..3b6c0c9 --- /dev/null +++ b/.history/module/models/_module_20241210071429.mjs @@ -0,0 +1,11 @@ +export { default as LethalFantasyCharacter } from "./character.mjs" +export { default as LethalFantasyOpponent } from "./opponent.mjs" +export { default as LethalFantasyWeapon } from "./weapon.mjs" +export { default as LethalFantasySpell } from "./spell.mjs" +export { default as LethalFantasySkill } from "./skill.mjs" +export { default as LethalFantasyArmor } from "./armor.mjs" +export { default as LethalFantasyShield } from "./shield.mjs" +export { default as LethalFantasyGift } from "./gift.mjs" +export { default as LethalFantasyVulnerability } from "./vulnerability.mjs" +export { default as LethalFantasyEquipment } from "./equipment.mjs" +export { default as LethalFantasyMiracle } from "./miracle.mjs" diff --git a/.history/module/models/armor_20241130182142.mjs b/.history/module/models/armor_20241130182142.mjs new file mode 100644 index 0000000..00445c4 --- /dev/null +++ b/.history/module/models/armor_20241130182142.mjs @@ -0,0 +1,29 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } +} diff --git a/.history/module/models/armor_20241210070624.mjs b/.history/module/models/armor_20241210070624.mjs new file mode 100644 index 0000000..f6260fd --- /dev/null +++ b/.history/module/models/armor_20241210070624.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + + diff --git a/.history/module/models/armor_20241210070625.mjs b/.history/module/models/armor_20241210070625.mjs new file mode 100644 index 0000000..f6260fd --- /dev/null +++ b/.history/module/models/armor_20241210070625.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + + diff --git a/.history/module/models/armor_20241210070627.mjs b/.history/module/models/armor_20241210070627.mjs new file mode 100644 index 0000000..f0022da --- /dev/null +++ b/.history/module/models/armor_20241210070627.mjs @@ -0,0 +1,25 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + diff --git a/.history/module/models/armor_20241210070631.mjs b/.history/module/models/armor_20241210070631.mjs new file mode 100644 index 0000000..00445c4 --- /dev/null +++ b/.history/module/models/armor_20241210070631.mjs @@ -0,0 +1,29 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } +} diff --git a/.history/module/models/armor_20241210070634.mjs b/.history/module/models/armor_20241210070634.mjs new file mode 100644 index 0000000..b0556f9 --- /dev/null +++ b/.history/module/models/armor_20241210070634.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210070636.mjs b/.history/module/models/armor_20241210070636.mjs new file mode 100644 index 0000000..9aec8fc --- /dev/null +++ b/.history/module/models/armor_20241210070636.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +}} diff --git a/.history/module/models/armor_20241210070637.mjs b/.history/module/models/armor_20241210070637.mjs new file mode 100644 index 0000000..b0556f9 --- /dev/null +++ b/.history/module/models/armor_20241210070637.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210070918.mjs b/.history/module/models/armor_20241210070918.mjs new file mode 100644 index 0000000..e2cac7c --- /dev/null +++ b/.history/module/models/armor_20241210070918.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximum = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210070920.mjs b/.history/module/models/armor_20241210070920.mjs new file mode 100644 index 0000000..9a1c1d9 --- /dev/null +++ b/.history/module/models/armor_20241210070920.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMove = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210070923.mjs b/.history/module/models/armor_20241210070923.mjs new file mode 100644 index 0000000..61157e3 --- /dev/null +++ b/.history/module/models/armor_20241210070923.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armortype = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071003.mjs b/.history/module/models/armor_20241210071003.mjs new file mode 100644 index 0000000..d07dd91 --- /dev/null +++ b/.history/module/models/armor_20241210071003.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damagereduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071028.mjs b/.history/module/models/armor_20241210071028.mjs new file mode 100644 index 0000000..523f629 --- /dev/null +++ b/.history/module/models/armor_20241210071028.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071210.mjs b/.history/module/models/armor_20241210071210.mjs new file mode 100644 index 0000000..3638e12 --- /dev/null +++ b/.history/module/models/armor_20241210071210.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.NumberField({ required: true, initial: "L" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071213.mjs b/.history/module/models/armor_20241210071213.mjs new file mode 100644 index 0000000..78af544 --- /dev/null +++ b/.history/module/models/armor_20241210071213.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.NumberField({ required: true, initial: "0" }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071217.mjs b/.history/module/models/armor_20241210071217.mjs new file mode 100644 index 0000000..4989957 --- /dev/null +++ b/.history/module/models/armor_20241210071217.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.NumberField({ required: true, initial: "0", min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071218.mjs b/.history/module/models/armor_20241210071218.mjs new file mode 100644 index 0000000..4989957 --- /dev/null +++ b/.history/module/models/armor_20241210071218.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.load = new fields.NumberField({ required: true, initial: "0", min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071602.mjs b/.history/module/models/armor_20241210071602.mjs new file mode 100644 index 0000000..940a9f1 --- /dev/null +++ b/.history/module/models/armor_20241210071602.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.loadEnc = new fields.NumberField({ required: true, initial: "0", min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071604.mjs b/.history/module/models/armor_20241210071604.mjs new file mode 100644 index 0000000..e08987c --- /dev/null +++ b/.history/module/models/armor_20241210071604.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: "0", min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210071830.mjs b/.history/module/models/armor_20241210071830.mjs new file mode 100644 index 0000000..3d1839d --- /dev/null +++ b/.history/module/models/armor_20241210071830.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172351.mjs b/.history/module/models/armor_20241210172351.mjs new file mode 100644 index 0000000..6575362 --- /dev/null +++ b/.history/module/models/armor_20241210172351.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172354.mjs b/.history/module/models/armor_20241210172354.mjs new file mode 100644 index 0000000..5e9144d --- /dev/null +++ b/.history/module/models/armor_20241210172354.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "", min: 0 }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172355.mjs b/.history/module/models/armor_20241210172355.mjs new file mode 100644 index 0000000..d2c5967 --- /dev/null +++ b/.history/module/models/armor_20241210172355.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172356.mjs b/.history/module/models/armor_20241210172356.mjs new file mode 100644 index 0000000..d2c5967 --- /dev/null +++ b/.history/module/models/armor_20241210172356.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172411.mjs b/.history/module/models/armor_20241210172411.mjs new file mode 100644 index 0000000..d2c5967 --- /dev/null +++ b/.history/module/models/armor_20241210172411.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172415.mjs b/.history/module/models/armor_20241210172415.mjs new file mode 100644 index 0000000..93dfadf --- /dev/null +++ b/.history/module/models/armor_20241210172415.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172421.mjs b/.history/module/models/armor_20241210172421.mjs new file mode 100644 index 0000000..caed32a --- /dev/null +++ b/.history/module/models/armor_20241210172421.mjs @@ -0,0 +1,26 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172422.mjs b/.history/module/models/armor_20241210172422.mjs new file mode 100644 index 0000000..abb4e3d --- /dev/null +++ b/.history/module/models/armor_20241210172422.mjs @@ -0,0 +1,27 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172439.mjs b/.history/module/models/armor_20241210172439.mjs new file mode 100644 index 0000000..94d5714 --- /dev/null +++ b/.history/module/models/armor_20241210172439.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172441.mjs b/.history/module/models/armor_20241210172441.mjs new file mode 100644 index 0000000..1d43bec --- /dev/null +++ b/.history/module/models/armor_20241210172441.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isShield = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172442.mjs b/.history/module/models/armor_20241210172442.mjs new file mode 100644 index 0000000..1d43bec --- /dev/null +++ b/.history/module/models/armor_20241210172442.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isShield = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172443.mjs b/.history/module/models/armor_20241210172443.mjs new file mode 100644 index 0000000..1d43bec --- /dev/null +++ b/.history/module/models/armor_20241210172443.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isShield = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172447.mjs b/.history/module/models/armor_20241210172447.mjs new file mode 100644 index 0000000..f69b74b --- /dev/null +++ b/.history/module/models/armor_20241210172447.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210172449.mjs b/.history/module/models/armor_20241210172449.mjs new file mode 100644 index 0000000..f69b74b --- /dev/null +++ b/.history/module/models/armor_20241210172449.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210173329.mjs b/.history/module/models/armor_20241210173329.mjs new file mode 100644 index 0000000..f69b74b --- /dev/null +++ b/.history/module/models/armor_20241210173329.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210173332.mjs b/.history/module/models/armor_20241210173332.mjs new file mode 100644 index 0000000..f69b74b --- /dev/null +++ b/.history/module/models/armor_20241210173332.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/armor_20241210173333.mjs b/.history/module/models/armor_20241210173333.mjs new file mode 100644 index 0000000..f69b74b --- /dev/null +++ b/.history/module/models/armor_20241210173333.mjs @@ -0,0 +1,28 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) + schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) + + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Armor"] + +} diff --git a/.history/module/models/character_20241130072212.mjs b/.history/module/models/character_20241130072212.mjs new file mode 100644 index 0000000..a48c577 --- /dev/null +++ b/.history/module/models/character_20241130072212.mjs @@ -0,0 +1,142 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208163852.mjs b/.history/module/models/character_20241208163852.mjs new file mode 100644 index 0000000..2e12b14 --- /dev/null +++ b/.history/module/models/character_20241208163852.mjs @@ -0,0 +1,146 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208163903.mjs b/.history/module/models/character_20241208163903.mjs new file mode 100644 index 0000000..8550343 --- /dev/null +++ b/.history/module/models/character_20241208163903.mjs @@ -0,0 +1,146 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.g = this.computeBase(); + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208163907.mjs b/.history/module/models/character_20241208163907.mjs new file mode 100644 index 0000000..e722a40 --- /dev/null +++ b/.history/module/models/character_20241208163907.mjs @@ -0,0 +1,146 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.value = this.computeBase(); + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208163950.mjs b/.history/module/models/character_20241208163950.mjs new file mode 100644 index 0000000..938432a --- /dev/null +++ b/.history/module/models/character_20241208163950.mjs @@ -0,0 +1,146 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = this.computeBase(); + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208163954.mjs b/.history/module/models/character_20241208163954.mjs new file mode 100644 index 0000000..7139d87 --- /dev/null +++ b/.history/module/models/character_20241208163954.mjs @@ -0,0 +1,146 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164009.mjs b/.history/module/models/character_20241208164009.mjs new file mode 100644 index 0000000..e26f2f3 --- /dev/null +++ b/.history/module/models/character_20241208164009.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164014.mjs b/.history/module/models/character_20241208164014.mjs new file mode 100644 index 0000000..7db1032 --- /dev/null +++ b/.history/module/models/character_20241208164014.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164015.mjs b/.history/module/models/character_20241208164015.mjs new file mode 100644 index 0000000..7db1032 --- /dev/null +++ b/.history/module/models/character_20241208164015.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164017.mjs b/.history/module/models/character_20241208164017.mjs new file mode 100644 index 0000000..7db1032 --- /dev/null +++ b/.history/module/models/character_20241208164017.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164018.mjs b/.history/module/models/character_20241208164018.mjs new file mode 100644 index 0000000..7db1032 --- /dev/null +++ b/.history/module/models/character_20241208164018.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164021.mjs b/.history/module/models/character_20241208164021.mjs new file mode 100644 index 0000000..ee32df5 --- /dev/null +++ b/.history/module/models/character_20241208164021.mjs @@ -0,0 +1,147 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164036.mjs b/.history/module/models/character_20241208164036.mjs new file mode 100644 index 0000000..613633d --- /dev/null +++ b/.history/module/models/character_20241208164036.mjs @@ -0,0 +1,148 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164043.mjs b/.history/module/models/character_20241208164043.mjs new file mode 100644 index 0000000..f32ddb8 --- /dev/null +++ b/.history/module/models/character_20241208164043.mjs @@ -0,0 +1,149 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for () + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164048.mjs b/.history/module/models/character_20241208164048.mjs new file mode 100644 index 0000000..767ee7a --- /dev/null +++ b/.history/module/models/character_20241208164048.mjs @@ -0,0 +1,149 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let ) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164054.mjs b/.history/module/models/character_20241208164054.mjs new file mode 100644 index 0000000..70ed310 --- /dev/null +++ b/.history/module/models/character_20241208164054.mjs @@ -0,0 +1,149 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in ) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164055.mjs b/.history/module/models/character_20241208164055.mjs new file mode 100644 index 0000000..eb4ddda --- /dev/null +++ b/.history/module/models/character_20241208164055.mjs @@ -0,0 +1,149 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164101.mjs b/.history/module/models/character_20241208164101.mjs new file mode 100644 index 0000000..822faee --- /dev/null +++ b/.history/module/models/character_20241208164101.mjs @@ -0,0 +1,150 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (c) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164153.mjs b/.history/module/models/character_20241208164153.mjs new file mode 100644 index 0000000..aa7b910 --- /dev/null +++ b/.history/module/models/character_20241208164153.mjs @@ -0,0 +1,150 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164154.mjs b/.history/module/models/character_20241208164154.mjs new file mode 100644 index 0000000..5ccb73b --- /dev/null +++ b/.history/module/models/character_20241208164154.mjs @@ -0,0 +1,150 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164223.mjs b/.history/module/models/character_20241208164223.mjs new file mode 100644 index 0000000..36b960e --- /dev/null +++ b/.history/module/models/character_20241208164223.mjs @@ -0,0 +1,150 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164226.mjs b/.history/module/models/character_20241208164226.mjs new file mode 100644 index 0000000..3c34711 --- /dev/null +++ b/.history/module/models/character_20241208164226.mjs @@ -0,0 +1,150 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164228.mjs b/.history/module/models/character_20241208164228.mjs new file mode 100644 index 0000000..d4eb3df --- /dev/null +++ b/.history/module/models/character_20241208164228.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164233.mjs b/.history/module/models/character_20241208164233.mjs new file mode 100644 index 0000000..bc41c83 --- /dev/null +++ b/.history/module/models/character_20241208164233.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += Math.max(0, this.characteristics[c].value - 3) + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164234.mjs b/.history/module/models/character_20241208164234.mjs new file mode 100644 index 0000000..d98f0a7 --- /dev/null +++ b/.history/module/models/character_20241208164234.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += Math.max(0, this.characteristics[c].value) + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164237.mjs b/.history/module/models/character_20241208164237.mjs new file mode 100644 index 0000000..f5b003f --- /dev/null +++ b/.history/module/models/character_20241208164237.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value) + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164238.mjs b/.history/module/models/character_20241208164238.mjs new file mode 100644 index 0000000..a183f00 --- /dev/null +++ b/.history/module/models/character_20241208164238.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164239.mjs b/.history/module/models/character_20241208164239.mjs new file mode 100644 index 0000000..a183f00 --- /dev/null +++ b/.history/module/models/character_20241208164239.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164240.mjs b/.history/module/models/character_20241208164240.mjs new file mode 100644 index 0000000..a183f00 --- /dev/null +++ b/.history/module/models/character_20241208164240.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164241.mjs b/.history/module/models/character_20241208164241.mjs new file mode 100644 index 0000000..a183f00 --- /dev/null +++ b/.history/module/models/character_20241208164241.mjs @@ -0,0 +1,152 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164246.mjs b/.history/module/models/character_20241208164246.mjs new file mode 100644 index 0000000..8c49786 --- /dev/null +++ b/.history/module/models/character_20241208164246.mjs @@ -0,0 +1,153 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = this. + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164252.mjs b/.history/module/models/character_20241208164252.mjs new file mode 100644 index 0000000..564f462 --- /dev/null +++ b/.history/module/models/character_20241208164252.mjs @@ -0,0 +1,153 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 2) + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164253.mjs b/.history/module/models/character_20241208164253.mjs new file mode 100644 index 0000000..564f462 --- /dev/null +++ b/.history/module/models/character_20241208164253.mjs @@ -0,0 +1,153 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 2) + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164256.mjs b/.history/module/models/character_20241208164256.mjs new file mode 100644 index 0000000..5c719bf --- /dev/null +++ b/.history/module/models/character_20241208164256.mjs @@ -0,0 +1,153 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164257.mjs b/.history/module/models/character_20241208164257.mjs new file mode 100644 index 0000000..5c719bf --- /dev/null +++ b/.history/module/models/character_20241208164257.mjs @@ -0,0 +1,153 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241208164300.mjs b/.history/module/models/character_20241208164300.mjs new file mode 100644 index 0000000..dfc9b71 --- /dev/null +++ b/.history/module/models/character_20241208164300.mjs @@ -0,0 +1,154 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Carac + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075636.mjs b/.history/module/models/character_20241210075636.mjs new file mode 100644 index 0000000..d518e01 --- /dev/null +++ b/.history/module/models/character_20241210075636.mjs @@ -0,0 +1,154 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075643.mjs b/.history/module/models/character_20241210075643.mjs new file mode 100644 index 0000000..1fab9e8 --- /dev/null +++ b/.history/module/models/character_20241210075643.mjs @@ -0,0 +1,162 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075647.mjs b/.history/module/models/character_20241210075647.mjs new file mode 100644 index 0000000..b168f45 --- /dev/null +++ b/.history/module/models/character_20241210075647.mjs @@ -0,0 +1,163 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075650.mjs b/.history/module/models/character_20241210075650.mjs new file mode 100644 index 0000000..d3be77f --- /dev/null +++ b/.history/module/models/character_20241210075650.mjs @@ -0,0 +1,163 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075651.mjs b/.history/module/models/character_20241210075651.mjs new file mode 100644 index 0000000..d3be77f --- /dev/null +++ b/.history/module/models/character_20241210075651.mjs @@ -0,0 +1,163 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075659.mjs b/.history/module/models/character_20241210075659.mjs new file mode 100644 index 0000000..9645e91 --- /dev/null +++ b/.history/module/models/character_20241210075659.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075704.mjs b/.history/module/models/character_20241210075704.mjs new file mode 100644 index 0000000..09fd3ef --- /dev/null +++ b/.history/module/models/character_20241210075704.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075708.mjs b/.history/module/models/character_20241210075708.mjs new file mode 100644 index 0000000..a0bf8d7 --- /dev/null +++ b/.history/module/models/character_20241210075708.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075711.mjs b/.history/module/models/character_20241210075711.mjs new file mode 100644 index 0000000..c9843aa --- /dev/null +++ b/.history/module/models/character_20241210075711.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075712.mjs b/.history/module/models/character_20241210075712.mjs new file mode 100644 index 0000000..c9843aa --- /dev/null +++ b/.history/module/models/character_20241210075712.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075716.mjs b/.history/module/models/character_20241210075716.mjs new file mode 100644 index 0000000..f41d6bb --- /dev/null +++ b/.history/module/models/character_20241210075716.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075717.mjs b/.history/module/models/character_20241210075717.mjs new file mode 100644 index 0000000..f41d6bb --- /dev/null +++ b/.history/module/models/character_20241210075717.mjs @@ -0,0 +1,169 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075811.mjs b/.history/module/models/character_20241210075811.mjs new file mode 100644 index 0000000..20a0004 --- /dev/null +++ b/.history/module/models/character_20241210075811.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075815.mjs b/.history/module/models/character_20241210075815.mjs new file mode 100644 index 0000000..cc45564 --- /dev/null +++ b/.history/module/models/character_20241210075815.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075816.mjs b/.history/module/models/character_20241210075816.mjs new file mode 100644 index 0000000..cc45564 --- /dev/null +++ b/.history/module/models/character_20241210075816.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075819.mjs b/.history/module/models/character_20241210075819.mjs new file mode 100644 index 0000000..d3e20f7 --- /dev/null +++ b/.history/module/models/character_20241210075819.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075821.mjs b/.history/module/models/character_20241210075821.mjs new file mode 100644 index 0000000..ce4f0ff --- /dev/null +++ b/.history/module/models/character_20241210075821.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075822.mjs b/.history/module/models/character_20241210075822.mjs new file mode 100644 index 0000000..ce4f0ff --- /dev/null +++ b/.history/module/models/character_20241210075822.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075823.mjs b/.history/module/models/character_20241210075823.mjs new file mode 100644 index 0000000..ce4f0ff --- /dev/null +++ b/.history/module/models/character_20241210075823.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075824.mjs b/.history/module/models/character_20241210075824.mjs new file mode 100644 index 0000000..8e70418 --- /dev/null +++ b/.history/module/models/character_20241210075824.mjs @@ -0,0 +1,174 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075825.mjs b/.history/module/models/character_20241210075825.mjs new file mode 100644 index 0000000..a762213 --- /dev/null +++ b/.history/module/models/character_20241210075825.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075832.mjs b/.history/module/models/character_20241210075832.mjs new file mode 100644 index 0000000..7139c61 --- /dev/null +++ b/.history/module/models/character_20241210075832.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075837.mjs b/.history/module/models/character_20241210075837.mjs new file mode 100644 index 0000000..cc2abce --- /dev/null +++ b/.history/module/models/character_20241210075837.mjs @@ -0,0 +1,173 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075917.mjs b/.history/module/models/character_20241210075917.mjs new file mode 100644 index 0000000..d1700f9 --- /dev/null +++ b/.history/module/models/character_20241210075917.mjs @@ -0,0 +1,177 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075919.mjs b/.history/module/models/character_20241210075919.mjs new file mode 100644 index 0000000..f594d06 --- /dev/null +++ b/.history/module/models/character_20241210075919.mjs @@ -0,0 +1,177 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.money = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210075920.mjs b/.history/module/models/character_20241210075920.mjs new file mode 100644 index 0000000..f594d06 --- /dev/null +++ b/.history/module/models/character_20241210075920.mjs @@ -0,0 +1,177 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.money = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080003.mjs b/.history/module/models/character_20241210080003.mjs new file mode 100644 index 0000000..05a1914 --- /dev/null +++ b/.history/module/models/character_20241210080003.mjs @@ -0,0 +1,178 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + schema.money = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080005.mjs b/.history/module/models/character_20241210080005.mjs new file mode 100644 index 0000000..5f00833 --- /dev/null +++ b/.history/module/models/character_20241210080005.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080009.mjs b/.history/module/models/character_20241210080009.mjs new file mode 100644 index 0000000..9a0e52d --- /dev/null +++ b/.history/module/models/character_20241210080009.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080010.mjs b/.history/module/models/character_20241210080010.mjs new file mode 100644 index 0000000..9a0e52d --- /dev/null +++ b/.history/module/models/character_20241210080010.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080011.mjs b/.history/module/models/character_20241210080011.mjs new file mode 100644 index 0000000..9a0e52d --- /dev/null +++ b/.history/module/models/character_20241210080011.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080012.mjs b/.history/module/models/character_20241210080012.mjs new file mode 100644 index 0000000..9a0e52d --- /dev/null +++ b/.history/module/models/character_20241210080012.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080017.mjs b/.history/module/models/character_20241210080017.mjs new file mode 100644 index 0000000..aaa4c6b --- /dev/null +++ b/.history/module/models/character_20241210080017.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.mone = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080018.mjs b/.history/module/models/character_20241210080018.mjs new file mode 100644 index 0000000..bd4c28b --- /dev/null +++ b/.history/module/models/character_20241210080018.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.moneys = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080036.mjs b/.history/module/models/character_20241210080036.mjs new file mode 100644 index 0000000..ef594fc --- /dev/null +++ b/.history/module/models/character_20241210080036.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.moneys = new fields.SchemaField( + Object.values(SYSTEM.MONEY).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/character_20241210080039.mjs b/.history/module/models/character_20241210080039.mjs new file mode 100644 index 0000000..c6bdb80 --- /dev/null +++ b/.history/module/models/character_20241210080039.mjs @@ -0,0 +1,186 @@ +import { ROLL_TYPE, SYSTEM } from "../config/system.mjs" +import LethalFantasyRoll from "../documents/roll.mjs" +import LethalFantasyUtils from "../utils.mjs" + +export default class LethalFantasyCharacter extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.notes = new fields.HTMLField({ required: true, textSearch: true }) + + // Carac + const characteristicField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }), + percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }), + attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }), + defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + + schema.characteristics = new fields.SchemaField( + Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => { + obj[characteristic.id] = characteristicField(characteristic.label) + return obj + }, {}), + ) + + // Save + const saveField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.saves = new fields.SchemaField( + Object.values(SYSTEM.SAVES).reduce((obj, save) => { + obj[save.id] = saveField(save.label) + return obj + }, {}), + ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + + schema.hp = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.perception = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.grit = new fields.SchemaField({ + starting: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.luck = new fields.SchemaField({ + earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.movement = new fields.SchemaField({ + walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + schema.biodata = new fields.SchemaField({ + class: new fields.StringField({ required: true, nullable: false, initial: "" }), + level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), + mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), + alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), + age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), + height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), + eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), + hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + }) + schema.developmentPoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.moneys = new fields.SchemaField( + Object.values(SYSTEM.MONEY).reduce((obj, save) => { + obj[save.id] = moneyField(save.label) + return obj + }, {}), + ) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"] + + prepareDerivedData() { + super.prepareDerivedData(); + let grit = 0 + for (let c in this.characteristics) { + if (SYSTEM.CHARACTERISTICS_MAJOR[c.id]) { + grit += this.characteristics[c].value + } + } + this.grit.starting = Math.round(grit / 6) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async roll(rollType, rollTarget, rollAdvantage = "=") { + let rollValue + let opponentTarget + switch (rollType) { + case ROLL_TYPE.SAVE: + rollValue = this.caracteristiques[rollTarget].valeur + opponentTarget = game.user.targets.first() + break + case ROLL_TYPE.DAMAGE: + rollValue = this.parent.items.get(rollTarget).system.degats + opponentTarget = game.user.targets.first() + break + default: + // Handle other cases or do nothing + break + } + await this._roll(rollType, rollTarget, rollValue, opponentTarget, rollAdvantage) + } + + /** + * Rolls a dice for a character. + * @param {("save"|"resource|damage")} rollType The type of the roll. + * @param {number} rollTarget The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item. + * @param {number} rollValue The value of the roll. If the roll is a damage roll, this is the dice to roll. + * @param {Token} opponentTarget The target of the roll : used for save rolls to get the oppponent's malus. + * @param {"="|"+"|"++"|"-"|"--"} rollAdvantage If there is an avantage (+), a disadvantage (-), a double advantage (++), a double disadvantage (--) or a normal roll (=). + * @returns {Promise} - A promise that resolves to null if the roll is cancelled. + */ + async _roll(rollType, rollTarget, rollValue, opponentTarget = undefined, rollAdvantage = "=") { + const hasTarget = opponentTarget !== undefined + let roll = await LethalFantasyRoll.prompt({ + rollType, + rollTarget, + rollValue, + actorId: this.parent.id, + actorName: this.parent.name, + actorImage: this.parent.img, + hasTarget, + target: opponentTarget, + rollAdvantage, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } +} diff --git a/.history/module/models/equipment_20241207222905.mjs b/.history/module/models/equipment_20241207222905.mjs new file mode 100644 index 0000000..c68dd3c --- /dev/null +++ b/.history/module/models/equipment_20241207222905.mjs @@ -0,0 +1,25 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasyEquipment extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.EQUIPMENT_CATEGORIES }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.hi = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.medium = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.lo = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Equipment"] + +} diff --git a/.history/module/models/equipment_20241210071226.mjs b/.history/module/models/equipment_20241210071226.mjs new file mode 100644 index 0000000..f219296 --- /dev/null +++ b/.history/module/models/equipment_20241210071226.mjs @@ -0,0 +1,25 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasyEquipment extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.EQUIPMENT_CATEGORIES }) + + schema.load = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.hi = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.medium = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.lo = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Equipment"] + +} diff --git a/.history/module/models/equipment_20241210071610.mjs b/.history/module/models/equipment_20241210071610.mjs new file mode 100644 index 0000000..406125d --- /dev/null +++ b/.history/module/models/equipment_20241210071610.mjs @@ -0,0 +1,25 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasyEquipment extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.EQUIPMENT_CATEGORIES }) + + schema.encLoad = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.hi = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.medium = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.lo = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Equipment"] + +} diff --git a/.history/module/models/equipment_20241210071839.mjs b/.history/module/models/equipment_20241210071839.mjs new file mode 100644 index 0000000..eea5455 --- /dev/null +++ b/.history/module/models/equipment_20241210071839.mjs @@ -0,0 +1,25 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasyEquipment extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.EQUIPMENT_CATEGORIES }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.hi = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.medium = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.lo = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Equipment"] + +} diff --git a/.history/module/models/miracle_20241209150718.mjs b/.history/module/models/miracle_20241209150718.mjs new file mode 100644 index 0000000..e69de29 diff --git a/.history/module/models/miracle_20241209150719.mjs b/.history/module/models/miracle_20241209150719.mjs new file mode 100644 index 0000000..3cdde8e --- /dev/null +++ b/.history/module/models/miracle_20241209150719.mjs @@ -0,0 +1,39 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasySpell extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.castingTime = new fields.StringField({ required: true, initial: "" }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150908.mjs b/.history/module/models/miracle_20241209150908.mjs new file mode 100644 index 0000000..771437b --- /dev/null +++ b/.history/module/models/miracle_20241209150908.mjs @@ -0,0 +1,39 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.castingTime = new fields.StringField({ required: true, initial: "" }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150921.mjs b/.history/module/models/miracle_20241209150921.mjs new file mode 100644 index 0000000..a772878 --- /dev/null +++ b/.history/module/models/miracle_20241209150921.mjs @@ -0,0 +1,39 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150924.mjs b/.history/module/models/miracle_20241209150924.mjs new file mode 100644 index 0000000..19c7e57 --- /dev/null +++ b/.history/module/models/miracle_20241209150924.mjs @@ -0,0 +1,39 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150927.mjs b/.history/module/models/miracle_20241209150927.mjs new file mode 100644 index 0000000..62dab77 --- /dev/null +++ b/.history/module/models/miracle_20241209150927.mjs @@ -0,0 +1,39 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150944.mjs b/.history/module/models/miracle_20241209150944.mjs new file mode 100644 index 0000000..9886675 --- /dev/null +++ b/.history/module/models/miracle_20241209150944.mjs @@ -0,0 +1,40 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + material: new fields.BooleanField(), + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150946.mjs b/.history/module/models/miracle_20241209150946.mjs new file mode 100644 index 0000000..f01c556 --- /dev/null +++ b/.history/module/models/miracle_20241209150946.mjs @@ -0,0 +1,40 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + cataluyst: new fields.BooleanField(), + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150948.mjs b/.history/module/models/miracle_20241209150948.mjs new file mode 100644 index 0000000..1a7d956 --- /dev/null +++ b/.history/module/models/miracle_20241209150948.mjs @@ -0,0 +1,40 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150951.mjs b/.history/module/models/miracle_20241209150951.mjs new file mode 100644 index 0000000..77e8f55 --- /dev/null +++ b/.history/module/models/miracle_20241209150951.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + catalyst: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150956.mjs b/.history/module/models/miracle_20241209150956.mjs new file mode 100644 index 0000000..5c0dba6 --- /dev/null +++ b/.history/module/models/miracle_20241209150956.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209150957.mjs b/.history/module/models/miracle_20241209150957.mjs new file mode 100644 index 0000000..5c0dba6 --- /dev/null +++ b/.history/module/models/miracle_20241209150957.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151003.mjs b/.history/module/models/miracle_20241209151003.mjs new file mode 100644 index 0000000..fa9705d --- /dev/null +++ b/.history/module/models/miracle_20241209151003.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.spellRange = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151005.mjs b/.history/module/models/miracle_20241209151005.mjs new file mode 100644 index 0000000..828872b --- /dev/null +++ b/.history/module/models/miracle_20241209151005.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151010.mjs b/.history/module/models/miracle_20241209151010.mjs new file mode 100644 index 0000000..31ea44f --- /dev/null +++ b/.history/module/models/miracle_20241209151010.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151013.mjs b/.history/module/models/miracle_20241209151013.mjs new file mode 100644 index 0000000..ef2d2e3 --- /dev/null +++ b/.history/module/models/miracle_20241209151013.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151020.mjs b/.history/module/models/miracle_20241209151020.mjs new file mode 100644 index 0000000..66a303d --- /dev/null +++ b/.history/module/models/miracle_20241209151020.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151035.mjs b/.history/module/models/miracle_20241209151035.mjs new file mode 100644 index 0000000..66a303d --- /dev/null +++ b/.history/module/models/miracle_20241209151035.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151037.mjs b/.history/module/models/miracle_20241209151037.mjs new file mode 100644 index 0000000..402b6c4 --- /dev/null +++ b/.history/module/models/miracle_20241209151037.mjs @@ -0,0 +1,40 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151038.mjs b/.history/module/models/miracle_20241209151038.mjs new file mode 100644 index 0000000..402b6c4 --- /dev/null +++ b/.history/module/models/miracle_20241209151038.mjs @@ -0,0 +1,40 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151039.mjs b/.history/module/models/miracle_20241209151039.mjs new file mode 100644 index 0000000..2aa9884 --- /dev/null +++ b/.history/module/models/miracle_20241209151039.mjs @@ -0,0 +1,38 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151040.mjs b/.history/module/models/miracle_20241209151040.mjs new file mode 100644 index 0000000..2aa9884 --- /dev/null +++ b/.history/module/models/miracle_20241209151040.mjs @@ -0,0 +1,38 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Spell"] +} diff --git a/.history/module/models/miracle_20241209151053.mjs b/.history/module/models/miracle_20241209151053.mjs new file mode 100644 index 0000000..48628f4 --- /dev/null +++ b/.history/module/models/miracle_20241209151053.mjs @@ -0,0 +1,38 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Miracle"] +} diff --git a/.history/module/models/miracle_20241209151055.mjs b/.history/module/models/miracle_20241209151055.mjs new file mode 100644 index 0000000..48628f4 --- /dev/null +++ b/.history/module/models/miracle_20241209151055.mjs @@ -0,0 +1,38 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ + required: false, + blank: true, + initial: "", + textSearch: true, + }) + schema.level = new fields.NumberField({ + ...requiredInteger, + initial: 1, + min: 1, + max: 20, + }) + schema.components = new fields.SchemaField({ + verbal: new fields.BooleanField(), + somatic: new fields.BooleanField(), + material: new fields.BooleanField(), + catalyst: new fields.BooleanField(), + religious: new fields.BooleanField() + }) + schema.prayerTime = new fields.StringField({ required: true, initial: "" }) + schema.miracleRange = new fields.StringField({ required: true, initial: "" }) + schema.areaAffected = new fields.StringField({ required: true, initial: "" }) + schema.duration = new fields.StringField({ required: true, initial: "" }) + schema.savingThrow = new fields.StringField({ required: true, initial: "" }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Miracle"] +} diff --git a/.history/module/models/shield_20241130182151.mjs b/.history/module/models/shield_20241130182151.mjs new file mode 100644 index 0000000..c6f68bb --- /dev/null +++ b/.history/module/models/shield_20241130182151.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyShield extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.standing = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.crouching = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.destruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.autodestruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"] + +} diff --git a/.history/module/models/shield_20241210071245.mjs b/.history/module/models/shield_20241210071245.mjs new file mode 100644 index 0000000..94401c9 --- /dev/null +++ b/.history/module/models/shield_20241210071245.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyShield extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.standing = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.crouching = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.destruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.autodestruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"] + +} diff --git a/.history/module/models/shield_20241210071615.mjs b/.history/module/models/shield_20241210071615.mjs new file mode 100644 index 0000000..02c4a76 --- /dev/null +++ b/.history/module/models/shield_20241210071615.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyShield extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.standing = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.crouching = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.destruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.autodestruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"] + +} diff --git a/.history/module/models/shield_20241210071844.mjs b/.history/module/models/shield_20241210071844.mjs new file mode 100644 index 0000000..e0a0cee --- /dev/null +++ b/.history/module/models/shield_20241210071844.mjs @@ -0,0 +1,41 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyShield extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.standing = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.crouching = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.destruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.autodestruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"] + +} diff --git a/.history/module/models/shield_20241210172434.mjs b/.history/module/models/shield_20241210172434.mjs new file mode 100644 index 0000000..8ed321e --- /dev/null +++ b/.history/module/models/shield_20241210172434.mjs @@ -0,0 +1,42 @@ +import { SYSTEM } from "../config/system.mjs" +export default class LethalFantasyShield extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) + schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.standing = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.crouching = new fields.SchemaField({ + min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.destruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + schema.autodestruction = new fields.SchemaField({ + bashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + slashing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + piercing: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Shield"] + +} diff --git a/.history/module/models/skill_20241207090310.mjs b/.history/module/models/skill_20241207090310.mjs new file mode 100644 index 0000000..f05e302 --- /dev/null +++ b/.history/module/models/skill_20241207090310.mjs @@ -0,0 +1,67 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155713.mjs b/.history/module/models/skill_20241208155713.mjs new file mode 100644 index 0000000..f1eac94 --- /dev/null +++ b/.history/module/models/skill_20241208155713.mjs @@ -0,0 +1,68 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weapo + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155715.mjs b/.history/module/models/skill_20241208155715.mjs new file mode 100644 index 0000000..f374a22 --- /dev/null +++ b/.history/module/models/skill_20241208155715.mjs @@ -0,0 +1,68 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155716.mjs b/.history/module/models/skill_20241208155716.mjs new file mode 100644 index 0000000..5da806c --- /dev/null +++ b/.history/module/models/skill_20241208155716.mjs @@ -0,0 +1,68 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "simple", choices: SYSTEM.WEAPON_CLASS }) + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155717.mjs b/.history/module/models/skill_20241208155717.mjs new file mode 100644 index 0000000..72ad300 --- /dev/null +++ b/.history/module/models/skill_20241208155717.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "simple", choices: SYSTEM.WEAPON_CLASS }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155726.mjs b/.history/module/models/skill_20241208155726.mjs new file mode 100644 index 0000000..f0ea5f9 --- /dev/null +++ b/.history/module/models/skill_20241208155726.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155727.mjs b/.history/module/models/skill_20241208155727.mjs new file mode 100644 index 0000000..f0ea5f9 --- /dev/null +++ b/.history/module/models/skill_20241208155727.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208155728.mjs b/.history/module/models/skill_20241208155728.mjs new file mode 100644 index 0000000..f0ea5f9 --- /dev/null +++ b/.history/module/models/skill_20241208155728.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171006.mjs b/.history/module/models/skill_20241208171006.mjs new file mode 100644 index 0000000..098e9e8 --- /dev/null +++ b/.history/module/models/skill_20241208171006.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + s + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171010.mjs b/.history/module/models/skill_20241208171010.mjs new file mode 100644 index 0000000..3d5c7c6 --- /dev/null +++ b/.history/module/models/skill_20241208171010.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.bonus + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171013.mjs b/.history/module/models/skill_20241208171013.mjs new file mode 100644 index 0000000..7a89048 --- /dev/null +++ b/.history/module/models/skill_20241208171013.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.bonus + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171015.mjs b/.history/module/models/skill_20241208171015.mjs new file mode 100644 index 0000000..54e9be2 --- /dev/null +++ b/.history/module/models/skill_20241208171015.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.bon + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171017.mjs b/.history/module/models/skill_20241208171017.mjs new file mode 100644 index 0000000..6726bc9 --- /dev/null +++ b/.history/module/models/skill_20241208171017.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema. + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171022.mjs b/.history/module/models/skill_20241208171022.mjs new file mode 100644 index 0000000..6bd52de --- /dev/null +++ b/.history/module/models/skill_20241208171022.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171023.mjs b/.history/module/models/skill_20241208171023.mjs new file mode 100644 index 0000000..9df1bf9 --- /dev/null +++ b/.history/module/models/skill_20241208171023.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171031.mjs b/.history/module/models/skill_20241208171031.mjs new file mode 100644 index 0000000..f108139 --- /dev/null +++ b/.history/module/models/skill_20241208171031.mjs @@ -0,0 +1,70 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = + new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171033.mjs b/.history/module/models/skill_20241208171033.mjs new file mode 100644 index 0000000..6bd52de --- /dev/null +++ b/.history/module/models/skill_20241208171033.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171035.mjs b/.history/module/models/skill_20241208171035.mjs new file mode 100644 index 0000000..5c54d84 --- /dev/null +++ b/.history/module/models/skill_20241208171035.mjs @@ -0,0 +1,68 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171038.mjs b/.history/module/models/skill_20241208171038.mjs new file mode 100644 index 0000000..f0ea5f9 --- /dev/null +++ b/.history/module/models/skill_20241208171038.mjs @@ -0,0 +1,69 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171051.mjs b/.history/module/models/skill_20241208171051.mjs new file mode 100644 index 0000000..5a9ab85 --- /dev/null +++ b/.history/module/models/skill_20241208171051.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171055.mjs b/.history/module/models/skill_20241208171055.mjs new file mode 100644 index 0000000..901cc70 --- /dev/null +++ b/.history/module/models/skill_20241208171055.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171059.mjs b/.history/module/models/skill_20241208171059.mjs new file mode 100644 index 0000000..447a2a6 --- /dev/null +++ b/.history/module/models/skill_20241208171059.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171102.mjs b/.history/module/models/skill_20241208171102.mjs new file mode 100644 index 0000000..3d8fbba --- /dev/null +++ b/.history/module/models/skill_20241208171102.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171105.mjs b/.history/module/models/skill_20241208171105.mjs new file mode 100644 index 0000000..fc69f80 --- /dev/null +++ b/.history/module/models/skill_20241208171105.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171106.mjs b/.history/module/models/skill_20241208171106.mjs new file mode 100644 index 0000000..794c45f --- /dev/null +++ b/.history/module/models/skill_20241208171106.mjs @@ -0,0 +1,73 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + } + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171107.mjs b/.history/module/models/skill_20241208171107.mjs new file mode 100644 index 0000000..410dac0 --- /dev/null +++ b/.history/module/models/skill_20241208171107.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + } + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171108.mjs b/.history/module/models/skill_20241208171108.mjs new file mode 100644 index 0000000..410dac0 --- /dev/null +++ b/.history/module/models/skill_20241208171108.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + } + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171110.mjs b/.history/module/models/skill_20241208171110.mjs new file mode 100644 index 0000000..410dac0 --- /dev/null +++ b/.history/module/models/skill_20241208171110.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + } + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171115.mjs b/.history/module/models/skill_20241208171115.mjs new file mode 100644 index 0000000..bb2efa2 --- /dev/null +++ b/.history/module/models/skill_20241208171115.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + } + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171116.mjs b/.history/module/models/skill_20241208171116.mjs new file mode 100644 index 0000000..bb2efa2 --- /dev/null +++ b/.history/module/models/skill_20241208171116.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + } + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171117.mjs b/.history/module/models/skill_20241208171117.mjs new file mode 100644 index 0000000..8d5ad85 --- /dev/null +++ b/.history/module/models/skill_20241208171117.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171118.mjs b/.history/module/models/skill_20241208171118.mjs new file mode 100644 index 0000000..8d5ad85 --- /dev/null +++ b/.history/module/models/skill_20241208171118.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171121.mjs b/.history/module/models/skill_20241208171121.mjs new file mode 100644 index 0000000..8d5ad85 --- /dev/null +++ b/.history/module/models/skill_20241208171121.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208171122.mjs b/.history/module/models/skill_20241208171122.mjs new file mode 100644 index 0000000..8d5ad85 --- /dev/null +++ b/.history/module/models/skill_20241208171122.mjs @@ -0,0 +1,74 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201835.mjs b/.history/module/models/skill_20241208201835.mjs new file mode 100644 index 0000000..4de1b49 --- /dev/null +++ b/.history/module/models/skill_20241208201835.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this. + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201841.mjs b/.history/module/models/skill_20241208201841.mjs new file mode 100644 index 0000000..a238062 --- /dev/null +++ b/.history/module/models/skill_20241208201841.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this.totalBonus = this.bonus + this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201844.mjs b/.history/module/models/skill_20241208201844.mjs new file mode 100644 index 0000000..4a240df --- /dev/null +++ b/.history/module/models/skill_20241208201844.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201845.mjs b/.history/module/models/skill_20241208201845.mjs new file mode 100644 index 0000000..4a240df --- /dev/null +++ b/.history/module/models/skill_20241208201845.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201847.mjs b/.history/module/models/skill_20241208201847.mjs new file mode 100644 index 0000000..4a240df --- /dev/null +++ b/.history/module/models/skill_20241208201847.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201848.mjs b/.history/module/models/skill_20241208201848.mjs new file mode 100644 index 0000000..4a240df --- /dev/null +++ b/.history/module/models/skill_20241208201848.mjs @@ -0,0 +1,75 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201853.mjs b/.history/module/models/skill_20241208201853.mjs new file mode 100644 index 0000000..11787a9 --- /dev/null +++ b/.history/module/models/skill_20241208201853.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.) + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201856.mjs b/.history/module/models/skill_20241208201856.mjs new file mode 100644 index 0000000..9501ffc --- /dev/null +++ b/.history/module/models/skill_20241208201856.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.weaponType) + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201859.mjs b/.history/module/models/skill_20241208201859.mjs new file mode 100644 index 0000000..44591f7 --- /dev/null +++ b/.history/module/models/skill_20241208201859.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.skill) + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201912.mjs b/.history/module/models/skill_20241208201912.mjs new file mode 100644 index 0000000..3f23922 --- /dev/null +++ b/.history/module/models/skill_20241208201912.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "combat" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201914.mjs b/.history/module/models/skill_20241208201914.mjs new file mode 100644 index 0000000..9f51d0d --- /dev/null +++ b/.history/module/models/skill_20241208201914.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201916.mjs b/.history/module/models/skill_20241208201916.mjs new file mode 100644 index 0000000..9f51d0d --- /dev/null +++ b/.history/module/models/skill_20241208201916.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201917.mjs b/.history/module/models/skill_20241208201917.mjs new file mode 100644 index 0000000..2188c98 --- /dev/null +++ b/.history/module/models/skill_20241208201917.mjs @@ -0,0 +1,76 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201919.mjs b/.history/module/models/skill_20241208201919.mjs new file mode 100644 index 0000000..bc616f6 --- /dev/null +++ b/.history/module/models/skill_20241208201919.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201929.mjs b/.history/module/models/skill_20241208201929.mjs new file mode 100644 index 0000000..dfb2726 --- /dev/null +++ b/.history/module/models/skill_20241208201929.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201933.mjs b/.history/module/models/skill_20241208201933.mjs new file mode 100644 index 0000000..2828de0 --- /dev/null +++ b/.history/module/models/skill_20241208201933.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = this. + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201950.mjs b/.history/module/models/skill_20241208201950.mjs new file mode 100644 index 0000000..51995ae --- /dev/null +++ b/.history/module/models/skill_20241208201950.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = this.skillTotal + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201953.mjs b/.history/module/models/skill_20241208201953.mjs new file mode 100644 index 0000000..e044271 --- /dev/null +++ b/.history/module/models/skill_20241208201953.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = this.skillTotal / 10 + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208201959.mjs b/.history/module/models/skill_20241208201959.mjs new file mode 100644 index 0000000..d774793 --- /dev/null +++ b/.history/module/models/skill_20241208201959.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = Math.floor(this.skillTotal / 10 + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202001.mjs b/.history/module/models/skill_20241208202001.mjs new file mode 100644 index 0000000..f97f9fe --- /dev/null +++ b/.history/module/models/skill_20241208202001.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = Math.floor(this.skillTotal / 10) - 1 + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202002.mjs b/.history/module/models/skill_20241208202002.mjs new file mode 100644 index 0000000..f97f9fe --- /dev/null +++ b/.history/module/models/skill_20241208202002.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = Math.floor(this.skillTotal / 10) - 1 + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202009.mjs b/.history/module/models/skill_20241208202009.mjs new file mode 100644 index 0000000..1ad204f --- /dev/null +++ b/.history/module/models/skill_20241208202009.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1 + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202010.mjs b/.history/module/models/skill_20241208202010.mjs new file mode 100644 index 0000000..7ed6a17 --- /dev/null +++ b/.history/module/models/skill_20241208202010.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1 ) + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202011.mjs b/.history/module/models/skill_20241208202011.mjs new file mode 100644 index 0000000..7ed6a17 --- /dev/null +++ b/.history/module/models/skill_20241208202011.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1 ) + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202013.mjs b/.history/module/models/skill_20241208202013.mjs new file mode 100644 index 0000000..61ac9f3 --- /dev/null +++ b/.history/module/models/skill_20241208202013.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202014.mjs b/.history/module/models/skill_20241208202014.mjs new file mode 100644 index 0000000..61ac9f3 --- /dev/null +++ b/.history/module/models/skill_20241208202014.mjs @@ -0,0 +1,77 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202017.mjs b/.history/module/models/skill_20241208202017.mjs new file mode 100644 index 0000000..4b5fe72 --- /dev/null +++ b/.history/module/models/skill_20241208202017.mjs @@ -0,0 +1,78 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208202018.mjs b/.history/module/models/skill_20241208202018.mjs new file mode 100644 index 0000000..4b5fe72 --- /dev/null +++ b/.history/module/models/skill_20241208202018.mjs @@ -0,0 +1,78 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204413.mjs b/.history/module/models/skill_20241208204413.mjs new file mode 100644 index 0000000..09cf869 --- /dev/null +++ b/.history/module/models/skill_20241208204413.mjs @@ -0,0 +1,79 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204416.mjs b/.history/module/models/skill_20241208204416.mjs new file mode 100644 index 0000000..9d5bbbe --- /dev/null +++ b/.history/module/models/skill_20241208204416.mjs @@ -0,0 +1,79 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204422.mjs b/.history/module/models/skill_20241208204422.mjs new file mode 100644 index 0000000..e6bc2b1 --- /dev/null +++ b/.history/module/models/skill_20241208204422.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204426.mjs b/.history/module/models/skill_20241208204426.mjs new file mode 100644 index 0000000..9e488ba --- /dev/null +++ b/.history/module/models/skill_20241208204426.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204428.mjs b/.history/module/models/skill_20241208204428.mjs new file mode 100644 index 0000000..2296d8b --- /dev/null +++ b/.history/module/models/skill_20241208204428.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204429.mjs b/.history/module/models/skill_20241208204429.mjs new file mode 100644 index 0000000..2296d8b --- /dev/null +++ b/.history/module/models/skill_20241208204429.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = MathM.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204530.mjs b/.history/module/models/skill_20241208204530.mjs new file mode 100644 index 0000000..3510d66 --- /dev/null +++ b/.history/module/models/skill_20241208204530.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204648.mjs b/.history/module/models/skill_20241208204648.mjs new file mode 100644 index 0000000..5302503 --- /dev/null +++ b/.history/module/models/skill_20241208204648.mjs @@ -0,0 +1,84 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + update(data, options) { + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204651.mjs b/.history/module/models/skill_20241208204651.mjs new file mode 100644 index 0000000..84f212f --- /dev/null +++ b/.history/module/models/skill_20241208204651.mjs @@ -0,0 +1,86 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + update(data, options) { + super.update(data, options); + this.prepareDerivedData(); + } + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204652.mjs b/.history/module/models/skill_20241208204652.mjs new file mode 100644 index 0000000..6293fdc --- /dev/null +++ b/.history/module/models/skill_20241208204652.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + update(data, options) { + super.update(data, options); + this.prepareDerivedData(); + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204659.mjs b/.history/module/models/skill_20241208204659.mjs new file mode 100644 index 0000000..2cf86f9 --- /dev/null +++ b/.history/module/models/skill_20241208204659.mjs @@ -0,0 +1,88 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + update(data, options) { + super.update(data, options); + console.log("Skill update", this); + this.prepareDerivedData(); + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204754.mjs b/.history/module/models/skill_20241208204754.mjs new file mode 100644 index 0000000..3510d66 --- /dev/null +++ b/.history/module/models/skill_20241208204754.mjs @@ -0,0 +1,82 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204926.mjs b/.history/module/models/skill_20241208204926.mjs new file mode 100644 index 0000000..0cd6a23 --- /dev/null +++ b/.history/module/models/skill_20241208204926.mjs @@ -0,0 +1,84 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate() + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204929.mjs b/.history/module/models/skill_20241208204929.mjs new file mode 100644 index 0000000..dfb782a --- /dev/null +++ b/.history/module/models/skill_20241208204929.mjs @@ -0,0 +1,84 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204931.mjs b/.history/module/models/skill_20241208204931.mjs new file mode 100644 index 0000000..66e7be1 --- /dev/null +++ b/.history/module/models/skill_20241208204931.mjs @@ -0,0 +1,86 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204936.mjs b/.history/module/models/skill_20241208204936.mjs new file mode 100644 index 0000000..b1bdf78 --- /dev/null +++ b/.history/module/models/skill_20241208204936.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const errors = super.validate(options) + if (this.category === "weapon") { + if (this.weaponClass === "unarmed") { + if (this.weaponBonus.attack || this.weaponBonus.defense || this.weaponBonus.damage) { + errors.push("LETHALFANTASY.Errors.UnarmedWeaponBonus") + } + } + } + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204937.mjs b/.history/module/models/skill_20241208204937.mjs new file mode 100644 index 0000000..b1bdf78 --- /dev/null +++ b/.history/module/models/skill_20241208204937.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const errors = super.validate(options) + if (this.category === "weapon") { + if (this.weaponClass === "unarmed") { + if (this.weaponBonus.attack || this.weaponBonus.defense || this.weaponBonus.damage) { + errors.push("LETHALFANTASY.Errors.UnarmedWeaponBonus") + } + } + } + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204940.mjs b/.history/module/models/skill_20241208204940.mjs new file mode 100644 index 0000000..451c89c --- /dev/null +++ b/.history/module/models/skill_20241208204940.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const errors = super.validate(options) + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204941.mjs b/.history/module/models/skill_20241208204941.mjs new file mode 100644 index 0000000..451c89c --- /dev/null +++ b/.history/module/models/skill_20241208204941.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const errors = super.validate(options) + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204944.mjs b/.history/module/models/skill_20241208204944.mjs new file mode 100644 index 0000000..98cc5ab --- /dev/null +++ b/.history/module/models/skill_20241208204944.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const error = super.validate(options) + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204948.mjs b/.history/module/models/skill_20241208204948.mjs new file mode 100644 index 0000000..a101235 --- /dev/null +++ b/.history/module/models/skill_20241208204948.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + return errors + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204949.mjs b/.history/module/models/skill_20241208204949.mjs new file mode 100644 index 0000000..f3c6203 --- /dev/null +++ b/.history/module/models/skill_20241208204949.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204950.mjs b/.history/module/models/skill_20241208204950.mjs new file mode 100644 index 0000000..f3c6203 --- /dev/null +++ b/.history/module/models/skill_20241208204950.mjs @@ -0,0 +1,87 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204956.mjs b/.history/module/models/skill_20241208204956.mjs new file mode 100644 index 0000000..0619be8 --- /dev/null +++ b/.history/module/models/skill_20241208204956.mjs @@ -0,0 +1,88 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208204957.mjs b/.history/module/models/skill_20241208204957.mjs new file mode 100644 index 0000000..0619be8 --- /dev/null +++ b/.history/module/models/skill_20241208204957.mjs @@ -0,0 +1,88 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205030.mjs b/.history/module/models/skill_20241208205030.mjs new file mode 100644 index 0000000..67aa1f0 --- /dev/null +++ b/.history/module/models/skill_20241208205030.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205040.mjs b/.history/module/models/skill_20241208205040.mjs new file mode 100644 index 0000000..ff02d84 --- /dev/null +++ b/.history/module/models/skill_20241208205040.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205053.mjs b/.history/module/models/skill_20241208205053.mjs new file mode 100644 index 0000000..acfc52c --- /dev/null +++ b/.history/module/models/skill_20241208205053.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205057.mjs b/.history/module/models/skill_20241208205057.mjs new file mode 100644 index 0000000..99736bf --- /dev/null +++ b/.history/module/models/skill_20241208205057.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system. + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205112.mjs b/.history/module/models/skill_20241208205112.mjs new file mode 100644 index 0000000..3402e5a --- /dev/null +++ b/.history/module/models/skill_20241208205112.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205114.mjs b/.history/module/models/skill_20241208205114.mjs new file mode 100644 index 0000000..7513494 --- /dev/null +++ b/.history/module/models/skill_20241208205114.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205115.mjs b/.history/module/models/skill_20241208205115.mjs new file mode 100644 index 0000000..5d94a0c --- /dev/null +++ b/.history/module/models/skill_20241208205115.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205116.mjs b/.history/module/models/skill_20241208205116.mjs new file mode 100644 index 0000000..5d94a0c --- /dev/null +++ b/.history/module/models/skill_20241208205116.mjs @@ -0,0 +1,89 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205119.mjs b/.history/module/models/skill_20241208205119.mjs new file mode 100644 index 0000000..b99df2f --- /dev/null +++ b/.history/module/models/skill_20241208205119.mjs @@ -0,0 +1,90 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > ) + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205127.mjs b/.history/module/models/skill_20241208205127.mjs new file mode 100644 index 0000000..8c35950 --- /dev/null +++ b/.history/module/models/skill_20241208205127.mjs @@ -0,0 +1,90 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205129.mjs b/.history/module/models/skill_20241208205129.mjs new file mode 100644 index 0000000..c3fa5a6 --- /dev/null +++ b/.history/module/models/skill_20241208205129.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205137.mjs b/.history/module/models/skill_20241208205137.mjs new file mode 100644 index 0000000..cbc436c --- /dev/null +++ b/.history/module/models/skill_20241208205137.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + this.errors.push("LETHALFANTASY.Errors.skillBonus") + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205142.mjs b/.history/module/models/skill_20241208205142.mjs new file mode 100644 index 0000000..db08c23 --- /dev/null +++ b/.history/module/models/skill_20241208205142.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205143.mjs b/.history/module/models/skill_20241208205143.mjs new file mode 100644 index 0000000..db08c23 --- /dev/null +++ b/.history/module/models/skill_20241208205143.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205145.mjs b/.history/module/models/skill_20241208205145.mjs new file mode 100644 index 0000000..db08c23 --- /dev/null +++ b/.history/module/models/skill_20241208205145.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + const isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205151.mjs b/.history/module/models/skill_20241208205151.mjs new file mode 100644 index 0000000..2961a72 --- /dev/null +++ b/.history/module/models/skill_20241208205151.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205152.mjs b/.history/module/models/skill_20241208205152.mjs new file mode 100644 index 0000000..2961a72 --- /dev/null +++ b/.history/module/models/skill_20241208205152.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205153.mjs b/.history/module/models/skill_20241208205153.mjs new file mode 100644 index 0000000..2961a72 --- /dev/null +++ b/.history/module/models/skill_20241208205153.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + console.log("Validating skill", this.name, isError) + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205157.mjs b/.history/module/models/skill_20241208205157.mjs new file mode 100644 index 0000000..3e93e72 --- /dev/null +++ b/.history/module/models/skill_20241208205157.mjs @@ -0,0 +1,91 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205158.mjs b/.history/module/models/skill_20241208205158.mjs new file mode 100644 index 0000000..3e93e72 --- /dev/null +++ b/.history/module/models/skill_20241208205158.mjs @@ -0,0 +1,91 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205202.mjs b/.history/module/models/skill_20241208205202.mjs new file mode 100644 index 0000000..d5ca410 --- /dev/null +++ b/.history/module/models/skill_20241208205202.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205205.mjs b/.history/module/models/skill_20241208205205.mjs new file mode 100644 index 0000000..11a7e58 --- /dev/null +++ b/.history/module/models/skill_20241208205205.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.not + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205206.mjs b/.history/module/models/skill_20241208205206.mjs new file mode 100644 index 0000000..2903dde --- /dev/null +++ b/.history/module/models/skill_20241208205206.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205207.mjs b/.history/module/models/skill_20241208205207.mjs new file mode 100644 index 0000000..2903dde --- /dev/null +++ b/.history/module/models/skill_20241208205207.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205208.mjs b/.history/module/models/skill_20241208205208.mjs new file mode 100644 index 0000000..2903dde --- /dev/null +++ b/.history/module/models/skill_20241208205208.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205209.mjs b/.history/module/models/skill_20241208205209.mjs new file mode 100644 index 0000000..2903dde --- /dev/null +++ b/.history/module/models/skill_20241208205209.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.system.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205248.mjs b/.history/module/models/skill_20241208205248.mjs new file mode 100644 index 0000000..e070252 --- /dev/null +++ b/.history/module/models/skill_20241208205248.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.weaponBonus.attack + this.system.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205250.mjs b/.history/module/models/skill_20241208205250.mjs new file mode 100644 index 0000000..81240c8 --- /dev/null +++ b/.history/module/models/skill_20241208205250.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this.system.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205251.mjs b/.history/module/models/skill_20241208205251.mjs new file mode 100644 index 0000000..143998e --- /dev/null +++ b/.history/module/models/skill_20241208205251.mjs @@ -0,0 +1,92 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205406.mjs b/.history/module/models/skill_20241208205406.mjs new file mode 100644 index 0000000..ecb9dbe --- /dev/null +++ b/.history/module/models/skill_20241208205406.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205432.mjs b/.history/module/models/skill_20241208205432.mjs new file mode 100644 index 0000000..ada8a21 --- /dev/null +++ b/.history/module/models/skill_20241208205432.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.parent.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205435.mjs b/.history/module/models/skill_20241208205435.mjs new file mode 100644 index 0000000..108381b --- /dev/null +++ b/.history/module/models/skill_20241208205435.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.parent.weaponBonus.attack + this.parent.weaponBonus.defense + this.parent.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205436.mjs b/.history/module/models/skill_20241208205436.mjs new file mode 100644 index 0000000..108381b --- /dev/null +++ b/.history/module/models/skill_20241208205436.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.parent.weaponBonus.attack + this.parent.weaponBonus.defense + this.parent.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205439.mjs b/.history/module/models/skill_20241208205439.mjs new file mode 100644 index 0000000..12b54c9 --- /dev/null +++ b/.history/module/models/skill_20241208205439.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.parent.weaponBonus.attack + this.parent.weaponBonus.defense + this.parent.weaponBonus.damage + if ( bonus > this.parent.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205528.mjs b/.history/module/models/skill_20241208205528.mjs new file mode 100644 index 0000000..b955b7f --- /dev/null +++ b/.history/module/models/skill_20241208205528.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this.parent.weaponBonus.defense + this.parent.weaponBonus.damage + if ( bonus > this.parent.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205532.mjs b/.history/module/models/skill_20241208205532.mjs new file mode 100644 index 0000000..7f63ecd --- /dev/null +++ b/.history/module/models/skill_20241208205532.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this.parent.weaponBonus.damage + if ( bonus > this.parent.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205534.mjs b/.history/module/models/skill_20241208205534.mjs new file mode 100644 index 0000000..aef4b8d --- /dev/null +++ b/.history/module/models/skill_20241208205534.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this.parent.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205536.mjs b/.history/module/models/skill_20241208205536.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205536.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205602.mjs b/.history/module/models/skill_20241208205602.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205602.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205604.mjs b/.history/module/models/skill_20241208205604.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205604.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205658.mjs b/.history/module/models/skill_20241208205658.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205658.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205659.mjs b/.history/module/models/skill_20241208205659.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205659.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205730.mjs b/.history/module/models/skill_20241208205730.mjs new file mode 100644 index 0000000..f56c414 --- /dev/null +++ b/.history/module/models/skill_20241208205730.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205731.mjs b/.history/module/models/skill_20241208205731.mjs new file mode 100644 index 0000000..a50baf1 --- /dev/null +++ b/.history/module/models/skill_20241208205731.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205733.mjs b/.history/module/models/skill_20241208205733.mjs new file mode 100644 index 0000000..e9d477a --- /dev/null +++ b/.history/module/models/skill_20241208205733.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205737.mjs b/.history/module/models/skill_20241208205737.mjs new file mode 100644 index 0000000..ecb9dbe --- /dev/null +++ b/.history/module/models/skill_20241208205737.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage + if ( bonus > this.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205857.mjs b/.history/module/models/skill_20241208205857.mjs new file mode 100644 index 0000000..df3b310 --- /dev/null +++ b/.history/module/models/skill_20241208205857.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this..weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205858.mjs b/.history/module/models/skill_20241208205858.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205858.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205859.mjs b/.history/module/models/skill_20241208205859.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205859.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205900.mjs b/.history/module/models/skill_20241208205900.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205900.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205922.mjs b/.history/module/models/skill_20241208205922.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205922.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205923.mjs b/.history/module/models/skill_20241208205923.mjs new file mode 100644 index 0000000..60efb8a --- /dev/null +++ b/.history/module/models/skill_20241208205923.mjs @@ -0,0 +1,93 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205928.mjs b/.history/module/models/skill_20241208205928.mjs new file mode 100644 index 0000000..33e461c --- /dev/null +++ b/.history/module/models/skill_20241208205928.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + consol + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205930.mjs b/.history/module/models/skill_20241208205930.mjs new file mode 100644 index 0000000..0684cec --- /dev/null +++ b/.history/module/models/skill_20241208205930.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205932.mjs b/.history/module/models/skill_20241208205932.mjs new file mode 100644 index 0000000..6386eea --- /dev/null +++ b/.history/module/models/skill_20241208205932.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205933.mjs b/.history/module/models/skill_20241208205933.mjs new file mode 100644 index 0000000..f95da64 --- /dev/null +++ b/.history/module/models/skill_20241208205933.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205934.mjs b/.history/module/models/skill_20241208205934.mjs new file mode 100644 index 0000000..f95da64 --- /dev/null +++ b/.history/module/models/skill_20241208205934.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal)) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205958.mjs b/.history/module/models/skill_20241208205958.mjs new file mode 100644 index 0000000..37b79ef --- /dev/null +++ b/.history/module/models/skill_20241208205958.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208205959.mjs b/.history/module/models/skill_20241208205959.mjs new file mode 100644 index 0000000..37b79ef --- /dev/null +++ b/.history/module/models/skill_20241208205959.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210010.mjs b/.history/module/models/skill_20241208210010.mjs new file mode 100644 index 0000000..a2b62f1 --- /dev/null +++ b/.history/module/models/skill_20241208210010.mjs @@ -0,0 +1,95 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + this.skillTotal = this.computeBase(); + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210014.mjs b/.history/module/models/skill_20241208210014.mjs new file mode 100644 index 0000000..bc83511 --- /dev/null +++ b/.history/module/models/skill_20241208210014.mjs @@ -0,0 +1,95 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + let skillTotal = this.computeBase(); + console.log(bonus, this._source.skillTotal) + if ( bonus > this._source.skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210016.mjs b/.history/module/models/skill_20241208210016.mjs new file mode 100644 index 0000000..eb4ed06 --- /dev/null +++ b/.history/module/models/skill_20241208210016.mjs @@ -0,0 +1,95 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + let skillTotal = this.computeBase(); + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210017.mjs b/.history/module/models/skill_20241208210017.mjs new file mode 100644 index 0000000..eb4ed06 --- /dev/null +++ b/.history/module/models/skill_20241208210017.mjs @@ -0,0 +1,95 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + let skillTotal = this.computeBase(); + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210059.mjs b/.history/module/models/skill_20241208210059.mjs new file mode 100644 index 0000000..eb4ed06 --- /dev/null +++ b/.history/module/models/skill_20241208210059.mjs @@ -0,0 +1,95 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + let skillTotal = this.computeBase(); + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210107.mjs b/.history/module/models/skill_20241208210107.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210107.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210108.mjs b/.history/module/models/skill_20241208210108.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210108.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210109.mjs b/.history/module/models/skill_20241208210109.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210109.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210110.mjs b/.history/module/models/skill_20241208210110.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210110.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210111.mjs b/.history/module/models/skill_20241208210111.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210111.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210112.mjs b/.history/module/models/skill_20241208210112.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210112.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210113.mjs b/.history/module/models/skill_20241208210113.mjs new file mode 100644 index 0000000..ecb713a --- /dev/null +++ b/.history/module/models/skill_20241208210113.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > skillTotal) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210128.mjs b/.history/module/models/skill_20241208210128.mjs new file mode 100644 index 0000000..6e235ba --- /dev/null +++ b/.history/module/models/skill_20241208210128.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > ) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210132.mjs b/.history/module/models/skill_20241208210132.mjs new file mode 100644 index 0000000..fdab141 --- /dev/null +++ b/.history/module/models/skill_20241208210132.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > Math.floor(this._source.skillTotal / 10) ) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/skill_20241208210133.mjs b/.history/module/models/skill_20241208210133.mjs new file mode 100644 index 0000000..fdab141 --- /dev/null +++ b/.history/module/models/skill_20241208210133.mjs @@ -0,0 +1,94 @@ +import { SYSTEM } from "../config/system.mjs" +import { CATEGORY } from "../config/skill.mjs" +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.category = new fields.StringField({ required: true, initial: "layperson", choices: SYSTEM.SKILL_CATEGORY }) + schema.base = new fields.StringField({ required: true, initial: "WIS" }) + schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger,required: true, initial: 0, min: 0 }) + + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.weaponBonus = new fields.SchemaField({ + attack: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + defense: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + damage: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Skill"] + + get skillCategory() { + return game.i18n.localize(CATEGORY[this.category].label) + } + + validate(options) { + let isError = super.validate(options) + console.log(this) + let bonus = this._source.weaponBonus.attack + this._source.weaponBonus.defense + this._source.weaponBonus.damage + console.log(bonus, this._source.skillTotal) + if ( bonus > Math.floor(this._source.skillTotal / 10) ) { + ui.notifications.error(game.i18n.localize("LETHALFANTASY.Skill.error.weaponBonus")) + isError = true + } + return isError + } + + prepareDerivedData() { + super.prepareDerivedData(); + this.skillTotal = this.computeBase(); + if( this.category === "weapon" ) { + this.totalBonus = this.weaponBonus.attack + this.weaponBonus.defense + this.weaponBonus.damage; + if ( Number(this.skillTotal) ) { + this.availableBonus = Math.max( Math.floor(this.skillTotal / 10) - 1, 0 ) + } else { + this.availableBonus = "N/A" + } + } + } + + computeBase() { + let actor = this.parent?.actor; + if (!actor) { + return `${this.base } + ${ String(this.bonus)}`; + } + + // Split the base value per stat : WIS,DEX,STR,INT,CHA (example) + const base = this.base; + let baseSplit = base.split(","); + let baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + // Select the max stat value from the parent actor + let maxStat = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + if (statValue > maxStat) { + maxStat = statValue; + } + } + return maxStat + this.bonus + } else { + // Split with + calculate the total + baseSplit = base.split("+"); + baseSplitLength = baseSplit.length; + if ( baseSplitLength > 0) { + let total = 0; + for (let i = 0; i < baseSplitLength; i++) { + const stat = baseSplit[i]; + const statValue = actor.system.characteristics[stat.toLowerCase()]?.value || 0; + total += statValue; + } + return total + this.bonus + } + } + return `${this.base} + ${String(this.bonus)}`; + } +} diff --git a/.history/module/models/vulnerability_20241130073315.mjs b/.history/module/models/vulnerability_20241130073315.mjs new file mode 100644 index 0000000..4c11057 --- /dev/null +++ b/.history/module/models/vulnerability_20241130073315.mjs @@ -0,0 +1,16 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070643.mjs b/.history/module/models/vulnerability_20241217070643.mjs new file mode 100644 index 0000000..7d1e418 --- /dev/null +++ b/.history/module/models/vulnerability_20241217070643.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070645.mjs b/.history/module/models/vulnerability_20241217070645.mjs new file mode 100644 index 0000000..17e20e7 --- /dev/null +++ b/.history/module/models/vulnerability_20241217070645.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + SVGSwitchElement. + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070647.mjs b/.history/module/models/vulnerability_20241217070647.mjs new file mode 100644 index 0000000..854710f --- /dev/null +++ b/.history/module/models/vulnerability_20241217070647.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + scheme. + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070658.mjs b/.history/module/models/vulnerability_20241217070658.mjs new file mode 100644 index 0000000..7c4eb58 --- /dev/null +++ b/.history/module/models/vulnerability_20241217070658.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + scheme.gainedPoints = + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070659.mjs b/.history/module/models/vulnerability_20241217070659.mjs new file mode 100644 index 0000000..bb97b78 --- /dev/null +++ b/.history/module/models/vulnerability_20241217070659.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + scheme.gainedPoints = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/vulnerability_20241217070702.mjs b/.history/module/models/vulnerability_20241217070702.mjs new file mode 100644 index 0000000..3ad6a04 --- /dev/null +++ b/.history/module/models/vulnerability_20241217070702.mjs @@ -0,0 +1,17 @@ +export default class LethalFantasyVulnerability extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const requiredInteger = { required: true, nullable: false, integer: true } + const schema = {} + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.gainedPoints = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Vulnerability"] + +} diff --git a/.history/module/models/weapon_20241207222848.mjs b/.history/module/models/weapon_20241207222848.mjs new file mode 100644 index 0000000..f95b6ad --- /dev/null +++ b/.history/module/models/weapon_20241207222848.mjs @@ -0,0 +1,54 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241208155859.mjs b/.history/module/models/weapon_20241208155859.mjs new file mode 100644 index 0000000..25d3ddb --- /dev/null +++ b/.history/module/models/weapon_20241208155859.mjs @@ -0,0 +1,55 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241208155901.mjs b/.history/module/models/weapon_20241208155901.mjs new file mode 100644 index 0000000..bdcba4e --- /dev/null +++ b/.history/module/models/weapon_20241208155901.mjs @@ -0,0 +1,55 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241208155902.mjs b/.history/module/models/weapon_20241208155902.mjs new file mode 100644 index 0000000..20753fa --- /dev/null +++ b/.history/module/models/weapon_20241208155902.mjs @@ -0,0 +1,56 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.StringField({ required: true, initial: "L" }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241210071237.mjs b/.history/module/models/weapon_20241210071237.mjs new file mode 100644 index 0000000..cbb430e --- /dev/null +++ b/.history/module/models/weapon_20241210071237.mjs @@ -0,0 +1,56 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.load = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241210071617.mjs b/.history/module/models/weapon_20241210071617.mjs new file mode 100644 index 0000000..198c1cc --- /dev/null +++ b/.history/module/models/weapon_20241210071617.mjs @@ -0,0 +1,56 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241210071618.mjs b/.history/module/models/weapon_20241210071618.mjs new file mode 100644 index 0000000..198c1cc --- /dev/null +++ b/.history/module/models/weapon_20241210071618.mjs @@ -0,0 +1,56 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: "0", min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241210071850.mjs b/.history/module/models/weapon_20241210071850.mjs new file mode 100644 index 0000000..6c4be1b --- /dev/null +++ b/.history/module/models/weapon_20241210071850.mjs @@ -0,0 +1,56 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241210172431.mjs b/.history/module/models/weapon_20241210172431.mjs new file mode 100644 index 0000000..0d62c31 --- /dev/null +++ b/.history/module/models/weapon_20241210172431.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070154.mjs b/.history/module/models/weapon_20241217070154.mjs new file mode 100644 index 0000000..e42b7f2 --- /dev/null +++ b/.history/module/models/weapon_20241217070154.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: [["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070159.mjs b/.history/module/models/weapon_20241217070159.mjs new file mode 100644 index 0000000..3eb094b --- /dev/null +++ b/.history/module/models/weapon_20241217070159.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {1: ["1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070201.mjs b/.history/module/models/weapon_20241217070201.mjs new file mode 100644 index 0000000..f15948b --- /dev/null +++ b/.history/module/models/weapon_20241217070201.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {1: "1", "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070204.mjs b/.history/module/models/weapon_20241217070204.mjs new file mode 100644 index 0000000..cdd53a8 --- /dev/null +++ b/.history/module/models/weapon_20241217070204.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {1: "1", 2: "2"] }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070205.mjs b/.history/module/models/weapon_20241217070205.mjs new file mode 100644 index 0000000..b806f16 --- /dev/null +++ b/.history/module/models/weapon_20241217070205.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {1: "1", 2: "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070211.mjs b/.history/module/models/weapon_20241217070211.mjs new file mode 100644 index 0000000..c522207 --- /dev/null +++ b/.history/module/models/weapon_20241217070211.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070212.mjs b/.history/module/models/weapon_20241217070212.mjs new file mode 100644 index 0000000..c522207 --- /dev/null +++ b/.history/module/models/weapon_20241217070212.mjs @@ -0,0 +1,57 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070242.mjs b/.history/module/models/weapon_20241217070242.mjs new file mode 100644 index 0000000..f82852a --- /dev/null +++ b/.history/module/models/weapon_20241217070242.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070248.mjs b/.history/module/models/weapon_20241217070248.mjs new file mode 100644 index 0000000..90db4c9 --- /dev/null +++ b/.history/module/models/weapon_20241217070248.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070250.mjs b/.history/module/models/weapon_20241217070250.mjs new file mode 100644 index 0000000..a064361 --- /dev/null +++ b/.history/module/models/weapon_20241217070250.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + sschema.combatProgressionDice = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070253.mjs b/.history/module/models/weapon_20241217070253.mjs new file mode 100644 index 0000000..90db4c9 --- /dev/null +++ b/.history/module/models/weapon_20241217070253.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: ""}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070501.mjs b/.history/module/models/weapon_20241217070501.mjs new file mode 100644 index 0000000..f90cf4e --- /dev/null +++ b/.history/module/models/weapon_20241217070501.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4"}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070505.mjs b/.history/module/models/weapon_20241217070505.mjs new file mode 100644 index 0000000..3fb8734 --- /dev/null +++ b/.history/module/models/weapon_20241217070505.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: }) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070506.mjs b/.history/module/models/weapon_20241217070506.mjs new file mode 100644 index 0000000..f05a82e --- /dev/null +++ b/.history/module/models/weapon_20241217070506.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: COMBAT_PROGRESSION_DICE}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070510.mjs b/.history/module/models/weapon_20241217070510.mjs new file mode 100644 index 0000000..fa8483d --- /dev/null +++ b/.history/module/models/weapon_20241217070510.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: SYSTEM.COMBAT_PROGRESSION_DICE}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070511.mjs b/.history/module/models/weapon_20241217070511.mjs new file mode 100644 index 0000000..fa8483d --- /dev/null +++ b/.history/module/models/weapon_20241217070511.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: SYSTEM.COMBAT_PROGRESSION_DICE}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/models/weapon_20241217070512.mjs b/.history/module/models/weapon_20241217070512.mjs new file mode 100644 index 0000000..fa8483d --- /dev/null +++ b/.history/module/models/weapon_20241217070512.mjs @@ -0,0 +1,58 @@ +import { SYSTEM } from "../config/system.mjs" + +export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields + const schema = {} + const requiredInteger = { required: true, nullable: false, integer: true } + + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE }) + schema.weaponClass = new fields.StringField({ required: true, initial: "shortblade", choices: SYSTEM.WEAPON_CLASS }) + + schema.damageType = new fields.SchemaField({ + typeP: new fields.BooleanField(), + typeB: new fields.BooleanField(), + typeS: new fields.BooleanField() + }) + schema.damage = new fields.SchemaField({ + damageS: new fields.StringField({required: true, initial: ""}), + damageM: new fields.StringField({required: true, initial: ""}) + }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) + + schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: SYSTEM.COMBAT_PROGRESSION_DICE}) + + schema.speed = new fields.SchemaField({ + simpleAim: new fields.StringField({required: true, initial: ""}), + carefulAim: new fields.StringField({required: true, initial: ""}), + focusedAim: new fields.StringField({required: true, initial: ""}) + }) + + schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.weaponRange = new fields.SchemaField({ + pointBlank: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + short: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + medium: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + long: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + extreme: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }), + outOfSkill: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + }) + + schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + + return schema + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Weapon"] + + get weaponCategory() { + return game.i18n.localize(CATEGORY[this.weaponType].label) + } +} diff --git a/.history/module/utils_20241121235547.mjs b/.history/module/utils_20241121235547.mjs new file mode 100644 index 0000000..22dab28 --- /dev/null +++ b/.history/module/utils_20241121235547.mjs @@ -0,0 +1,23 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + const damageIndex = DICE_VALUES.indexOf(damage) + const damageMaxIndex = DICE_VALUES.indexOf(damageMax) + + // If damage exceeds damageMax, return damageMax + if (damageIndex > damageMaxIndex) { + return damageMax + } + + // Otherwise, return damage (as it is less than or equal to damageMax) + return damage + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + let index = DICE_VALUES.indexOf(dice) + return DICE_VALUES[index - 1] + } +} diff --git a/.history/module/utils_20241208203936.mjs b/.history/module/utils_20241208203936.mjs new file mode 100644 index 0000000..fa1ec20 --- /dev/null +++ b/.history/module/utils_20241208203936.mjs @@ -0,0 +1,15 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return damage + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + let index = DICE_VALUES.indexOf(dice) + return DICE_VALUES[index - 1] + } +} diff --git a/.history/module/utils_20241208203937.mjs b/.history/module/utils_20241208203937.mjs new file mode 100644 index 0000000..8cee1db --- /dev/null +++ b/.history/module/utils_20241208203937.mjs @@ -0,0 +1,15 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return 0 + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + let index = DICE_VALUES.indexOf(dice) + return DICE_VALUES[index - 1] + } +} diff --git a/.history/module/utils_20241208203944.mjs b/.history/module/utils_20241208203944.mjs new file mode 100644 index 0000000..a55a4f2 --- /dev/null +++ b/.history/module/utils_20241208203944.mjs @@ -0,0 +1,14 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return 0 + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + return 0 + } +} diff --git a/.history/module/utils_20241208203945.mjs b/.history/module/utils_20241208203945.mjs new file mode 100644 index 0000000..a55a4f2 --- /dev/null +++ b/.history/module/utils_20241208203945.mjs @@ -0,0 +1,14 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return 0 + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + return 0 + } +} diff --git a/.history/module/utils_20241208204002.mjs b/.history/module/utils_20241208204002.mjs new file mode 100644 index 0000000..a55a4f2 --- /dev/null +++ b/.history/module/utils_20241208204002.mjs @@ -0,0 +1,14 @@ +import { DICE_VALUES } from "./config/system.mjs" + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return 0 + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + return 0 + } +} diff --git a/.history/module/utils_20241208204004.mjs b/.history/module/utils_20241208204004.mjs new file mode 100644 index 0000000..1f38535 --- /dev/null +++ b/.history/module/utils_20241208204004.mjs @@ -0,0 +1,13 @@ + +export default class LethalFantasyUtils { + // Return the maximum damage limited by the maximum damage of the character + static maxDamage(damage, damageMax) { + // Otherwise, return damage (as it is less than or equal to damageMax) + return 0 + } + + // Used when a ressource is lost to find the next lower dice + static findLowerDice(dice) { + return 0 + } +} diff --git a/.history/styles/character_20241207085600.less b/.history/styles/character_20241207085600.less new file mode 100644 index 0000000..c16d357 --- /dev/null +++ b/.history/styles/character_20241207085600.less @@ -0,0 +1,358 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .experience { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + input[type="checkbox"] { + width: 20px; + } + input[type="checkbox"]:checked { + background-color: rgba(0, 0, 0, 0.1); + } + input[type="checkbox"]:checked::after { + color: rgba(0, 0, 0, 0.1); + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210211946.less b/.history/styles/character_20241210211946.less new file mode 100644 index 0000000..4233709 --- /dev/null +++ b/.history/styles/character_20241210211946.less @@ -0,0 +1,332 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210211954.less b/.history/styles/character_20241210211954.less new file mode 100644 index 0000000..5ee38ad --- /dev/null +++ b/.history/styles/character_20241210211954.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210211958.less b/.history/styles/character_20241210211958.less new file mode 100644 index 0000000..de62ec9 --- /dev/null +++ b/.history/styles/character_20241210211958.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212000.less b/.history/styles/character_20241210212000.less new file mode 100644 index 0000000..d892954 --- /dev/null +++ b/.history/styles/character_20241210212000.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212010.less b/.history/styles/character_20241210212010.less new file mode 100644 index 0000000..6c8f7dc --- /dev/null +++ b/.history/styles/character_20241210212010.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 2; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212016.less b/.history/styles/character_20241210212016.less new file mode 100644 index 0000000..d892954 --- /dev/null +++ b/.history/styles/character_20241210212016.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212032.less b/.history/styles/character_20241210212032.less new file mode 100644 index 0000000..9b2bf93 --- /dev/null +++ b/.history/styles/character_20241210212032.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 40px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212039.less b/.history/styles/character_20241210212039.less new file mode 100644 index 0000000..63f6faa --- /dev/null +++ b/.history/styles/character_20241210212039.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212134.less b/.history/styles/character_20241210212134.less new file mode 100644 index 0000000..63f6faa --- /dev/null +++ b/.history/styles/character_20241210212134.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212135.less b/.history/styles/character_20241210212135.less new file mode 100644 index 0000000..63f6faa --- /dev/null +++ b/.history/styles/character_20241210212135.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212141.less b/.history/styles/character_20241210212141.less new file mode 100644 index 0000000..07e1eb5 --- /dev/null +++ b/.history/styles/character_20241210212141.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 0; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212147.less b/.history/styles/character_20241210212147.less new file mode 100644 index 0000000..63f6faa --- /dev/null +++ b/.history/styles/character_20241210212147.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212150.less b/.history/styles/character_20241210212150.less new file mode 100644 index 0000000..63f6faa --- /dev/null +++ b/.history/styles/character_20241210212150.less @@ -0,0 +1,357 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212352.less b/.history/styles/character_20241210212352.less new file mode 100644 index 0000000..2192584 --- /dev/null +++ b/.history/styles/character_20241210212352.less @@ -0,0 +1,360 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212356.less b/.history/styles/character_20241210212356.less new file mode 100644 index 0000000..2c973f4 --- /dev/null +++ b/.history/styles/character_20241210212356.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min: + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212357.less b/.history/styles/character_20241210212357.less new file mode 100644 index 0000000..1366890 --- /dev/null +++ b/.history/styles/character_20241210212357.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212358.less b/.history/styles/character_20241210212358.less new file mode 100644 index 0000000..de166d0 --- /dev/null +++ b/.history/styles/character_20241210212358.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: none; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212401.less b/.history/styles/character_20241210212401.less new file mode 100644 index 0000000..691c9c8 --- /dev/null +++ b/.history/styles/character_20241210212401.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 200px; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212412.less b/.history/styles/character_20241210212412.less new file mode 100644 index 0000000..156a07a --- /dev/null +++ b/.history/styles/character_20241210212412.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 6rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212419.less b/.history/styles/character_20241210212419.less new file mode 100644 index 0000000..a7dd5c8 --- /dev/null +++ b/.history/styles/character_20241210212419.less @@ -0,0 +1,361 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212429.less b/.history/styles/character_20241210212429.less new file mode 100644 index 0000000..493ed66 --- /dev/null +++ b/.history/styles/character_20241210212429.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212431.less b/.history/styles/character_20241210212431.less new file mode 100644 index 0000000..3c0df57 --- /dev/null +++ b/.history/styles/character_20241210212431.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + mari + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212432.less b/.history/styles/character_20241210212432.less new file mode 100644 index 0000000..dfa7b1f --- /dev/null +++ b/.history/styles/character_20241210212432.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + mar + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212435.less b/.history/styles/character_20241210212435.less new file mode 100644 index 0000000..0f1da56 --- /dev/null +++ b/.history/styles/character_20241210212435.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: ; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212437.less b/.history/styles/character_20241210212437.less new file mode 100644 index 0000000..fd66c8e --- /dev/null +++ b/.history/styles/character_20241210212437.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 0.3rem;; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212439.less b/.history/styles/character_20241210212439.less new file mode 100644 index 0000000..59d574b --- /dev/null +++ b/.history/styles/character_20241210212439.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 0.3rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212447.less b/.history/styles/character_20241210212447.less new file mode 100644 index 0000000..ddc8754 --- /dev/null +++ b/.history/styles/character_20241210212447.less @@ -0,0 +1,362 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212618.less b/.history/styles/character_20241210212618.less new file mode 100644 index 0000000..fffc544 --- /dev/null +++ b/.history/styles/character_20241210212618.less @@ -0,0 +1,363 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left:0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212619.less b/.history/styles/character_20241210212619.less new file mode 100644 index 0000000..6f147e4 --- /dev/null +++ b/.history/styles/character_20241210212619.less @@ -0,0 +1,363 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210212656.less b/.history/styles/character_20241210212656.less new file mode 100644 index 0000000..6f147e4 --- /dev/null +++ b/.history/styles/character_20241210212656.less @@ -0,0 +1,363 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210225459.less b/.history/styles/character_20241210225459.less new file mode 100644 index 0000000..d1af1a8 --- /dev/null +++ b/.history/styles/character_20241210225459.less @@ -0,0 +1,393 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210225503.less b/.history/styles/character_20241210225503.less new file mode 100644 index 0000000..e537cdd --- /dev/null +++ b/.history/styles/character_20241210225503.less @@ -0,0 +1,393 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210225508.less b/.history/styles/character_20241210225508.less new file mode 100644 index 0000000..e3d9e20 --- /dev/null +++ b/.history/styles/character_20241210225508.less @@ -0,0 +1,393 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231314.less b/.history/styles/character_20241210231314.less new file mode 100644 index 0000000..ba8f23c --- /dev/null +++ b/.history/styles/character_20241210231314.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231320.less b/.history/styles/character_20241210231320.less new file mode 100644 index 0000000..51bbba0 --- /dev/null +++ b/.history/styles/character_20241210231320.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231323.less b/.history/styles/character_20241210231323.less new file mode 100644 index 0000000..1ede633 --- /dev/null +++ b/.history/styles/character_20241210231323.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231521.less b/.history/styles/character_20241210231521.less new file mode 100644 index 0000000..bd3159e --- /dev/null +++ b/.history/styles/character_20241210231521.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231528.less b/.history/styles/character_20241210231528.less new file mode 100644 index 0000000..bd3159e --- /dev/null +++ b/.history/styles/character_20241210231528.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231535.less b/.history/styles/character_20241210231535.less new file mode 100644 index 0000000..d45adef --- /dev/null +++ b/.history/styles/character_20241210231535.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 4rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/character_20241210231540.less b/.history/styles/character_20241210231540.less new file mode 100644 index 0000000..a60bdf3 --- /dev/null +++ b/.history/styles/character_20241210231540.less @@ -0,0 +1,424 @@ +.character-content { + .sheet-common(); + .character-sheet-common(); + overflow: scroll; +} + +.character-main { + display: flex; + + .character-pc { + display: flex; + gap: 10px; + flex: 1; + + .character-left { + min-width: 180px; + display: flex; + flex-direction: column; + + .character-left-image { + display: flex; + justify-content: center; + align-items: center; + padding-bottom: 20px; + .character-img { + height: 140px; + width: auto; + border: none; + } + } + + .character-hp-edit { + input { + display: flex; + width: 60px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + text-align: center; + } + } + } + + .character-right { + display: flex; + flex-direction: column; + gap: 5px; + + .character-name { + display: flex; + input { + width: 400px; + } + } + + .character-infos { + display: flex; + flex-direction: column; + gap: 10px; + + label { + min-width: 120px; + } + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + width: 50px; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .hp-separator { + font-size: calc(var(--font-size-standard) * 1.2); + display: flex; + align-items: center; + justify-content: center; + } + } + } + } + } + + .character-pc-play { + min-width: 500px; + } + + .character-pc-edit { + min-width: 650px; + } + + .character-characteristics { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-characteristic { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; + } + } + } + } + + .character-characteristics-play { + min-width: 225px; + } + + .character-characteristic-edit { + min-width: 400px; + } + + .character-resources { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-resource { + display: flex; + align-items: center; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: + pointer; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 70px; + } + } + .character-resource-edit { + display: flex; + align-items: center; + gap: 10px; + margin-left: 10px; + input { + display: flex; + width: 70px; + font-size: calc(var(--font-size-standard) * 1.4); + align-items: center; + justify-content: center; + padding: 0 5px 0 5px; + } + input[type="number"] { + text-align: center; + } + select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.5); + text-align: center; + width: 75px; + } + } + } + } + + .character-resources-play { + min-width: 235px; + } + + .character-resources-edit { + min-width: 400px; + } +} + +.character-biography { + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} + +.tab.character-skills { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + .skills { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .skill { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .gifts { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .gift { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } + .vulnerabilities { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; + .vulnerability { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + } + } + } +} +.tab.character-weapons { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .weapons { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + .weapon { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } + .armors { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .armor { + display: flex; + align-items: center; + gap: 10px; + .item-img { + width: 50px; + height: 50px; + margin: 5px 0 0 0; + } + } + } +} + +.tab.character-spells { + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + .spells { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + .spell { + display: flex; + gap: 10px; + } + } + + .appris { + font-weight: bold; + } + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/.history/styles/fvtt-lethal-fantasy_20241201145505.less b/.history/styles/fvtt-lethal-fantasy_20241201145505.less new file mode 100644 index 0000000..5f3a54d --- /dev/null +++ b/.history/styles/fvtt-lethal-fantasy_20241201145505.less @@ -0,0 +1,20 @@ +@import "global.less"; + +.lethalfantasy { + @import "mixins.less"; + @import "character.less"; + @import "opponent.less"; + @import "skill.less"; + @import "gift.less"; + @import "weapon.less"; + @import "armor.less"; + @import "spell.less"; + @import "vulnerability.less"; + @import "save.less"; + @import "chat.less"; + @import "equipment.less"; + @import "shield.less"; +} + +@import "roll.less"; +@import "application-manager.less"; diff --git a/.history/styles/fvtt-lethal-fantasy_20241209151130.less b/.history/styles/fvtt-lethal-fantasy_20241209151130.less new file mode 100644 index 0000000..c7b67b9 --- /dev/null +++ b/.history/styles/fvtt-lethal-fantasy_20241209151130.less @@ -0,0 +1,21 @@ +@import "global.less"; + +.lethalfantasy { + @import "mixins.less"; + @import "character.less"; + @import "opponent.less"; + @import "skill.less"; + @import "gift.less"; + @import "weapon.less"; + @import "armor.less"; + @import "spell.less"; + @import "vulnerability.less"; + @import "save.less"; + @import "chat.less"; + @import "equipment.less"; + @import "shield.less"; + +} + +@import "roll.less"; +@import "application-manager.less"; diff --git a/.history/styles/fvtt-lethal-fantasy_20241209151132.less b/.history/styles/fvtt-lethal-fantasy_20241209151132.less new file mode 100644 index 0000000..60686bb --- /dev/null +++ b/.history/styles/fvtt-lethal-fantasy_20241209151132.less @@ -0,0 +1,21 @@ +@import "global.less"; + +.lethalfantasy { + @import "mixins.less"; + @import "character.less"; + @import "opponent.less"; + @import "skill.less"; + @import "gift.less"; + @import "weapon.less"; + @import "armor.less"; + @import "spell.less"; + @import "vulnerability.less"; + @import "save.less"; + @import "chat.less"; + @import "equipment.less"; + @import "shield.less"; + @import "item.less"; +} + +@import "roll.less"; +@import "application-manager.less"; diff --git a/.history/styles/fvtt-lethal-fantasy_20241209151134.less b/.history/styles/fvtt-lethal-fantasy_20241209151134.less new file mode 100644 index 0000000..ce3890d --- /dev/null +++ b/.history/styles/fvtt-lethal-fantasy_20241209151134.less @@ -0,0 +1,21 @@ +@import "global.less"; + +.lethalfantasy { + @import "mixins.less"; + @import "character.less"; + @import "opponent.less"; + @import "skill.less"; + @import "gift.less"; + @import "weapon.less"; + @import "armor.less"; + @import "spell.less"; + @import "vulnerability.less"; + @import "save.less"; + @import "chat.less"; + @import "equipment.less"; + @import "shield.less"; + @import "miracle.less"; +} + +@import "roll.less"; +@import "application-manager.less"; diff --git a/.history/styles/fvtt-lethal-fantasy_20241210071307.less b/.history/styles/fvtt-lethal-fantasy_20241210071307.less new file mode 100644 index 0000000..c39bfba --- /dev/null +++ b/.history/styles/fvtt-lethal-fantasy_20241210071307.less @@ -0,0 +1,20 @@ +@import "global.less"; + +.lethalfantasy { + @import "mixins.less"; + @import "character.less"; + @import "opponent.less"; + @import "skill.less"; + @import "gift.less"; + @import "weapon.less"; + @import "armor.less"; + @import "spell.less"; + @import "vulnerability.less"; + @import "chat.less"; + @import "equipment.less"; + @import "shield.less"; + @import "miracle.less"; +} + +@import "roll.less"; +@import "application-manager.less"; diff --git a/.history/styles/miracle_20241209151116.less b/.history/styles/miracle_20241209151116.less new file mode 100644 index 0000000..e69de29 diff --git a/.history/styles/miracle_20241209151119.less b/.history/styles/miracle_20241209151119.less new file mode 100644 index 0000000..836f429 --- /dev/null +++ b/.history/styles/miracle_20241209151119.less @@ -0,0 +1,17 @@ +.spell-content { + .sheet-common(); + .item-sheet-common(); + + .header { + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } + +} diff --git a/.history/styles/miracle_20241209151121.less b/.history/styles/miracle_20241209151121.less new file mode 100644 index 0000000..e8376fd --- /dev/null +++ b/.history/styles/miracle_20241209151121.less @@ -0,0 +1,17 @@ +.miracle-content { + .sheet-common(); + .item-sheet-common(); + + .header { + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } + +} diff --git a/.history/styles/miracle_20241209151123.less b/.history/styles/miracle_20241209151123.less new file mode 100644 index 0000000..e8376fd --- /dev/null +++ b/.history/styles/miracle_20241209151123.less @@ -0,0 +1,17 @@ +.miracle-content { + .sheet-common(); + .item-sheet-common(); + + .header { + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } + +} diff --git a/.history/styles/miracle_20241209151125.less b/.history/styles/miracle_20241209151125.less new file mode 100644 index 0000000..e8376fd --- /dev/null +++ b/.history/styles/miracle_20241209151125.less @@ -0,0 +1,17 @@ +.miracle-content { + .sheet-common(); + .item-sheet-common(); + + .header { + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } + +} diff --git a/.history/system_20241207223959.json b/.history/system_20241207223959.json new file mode 100644 index 0000000..9d1a10b --- /dev/null +++ b/.history/system_20241207223959.json @@ -0,0 +1,70 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "#{VERSION}#", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241209231426.json b/.history/system_20241209231426.json new file mode 100644 index 0000000..d7af5cf --- /dev/null +++ b/.history/system_20241209231426.json @@ -0,0 +1,71 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "#{VERSION}#", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] } + "equipment": { "htmlFields": ["description"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241209231428.json b/.history/system_20241209231428.json new file mode 100644 index 0000000..89ce1ce --- /dev/null +++ b/.history/system_20241209231428.json @@ -0,0 +1,71 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "#{VERSION}#", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241209231431.json b/.history/system_20241209231431.json new file mode 100644 index 0000000..c57c5b9 --- /dev/null +++ b/.history/system_20241209231431.json @@ -0,0 +1,71 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "#{VERSION}#", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["description"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241209231432.json b/.history/system_20241209231432.json new file mode 100644 index 0000000..7c5ddaa --- /dev/null +++ b/.history/system_20241209231432.json @@ -0,0 +1,71 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "#{VERSION}#", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241210070129.json b/.history/system_20241210070129.json new file mode 100644 index 0000000..501aac6 --- /dev/null +++ b/.history/system_20241210070129.json @@ -0,0 +1,71 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "12.0.2", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "save": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241210071346.json b/.history/system_20241210071346.json new file mode 100644 index 0000000..2e55e9b --- /dev/null +++ b/.history/system_20241210071346.json @@ -0,0 +1,70 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "12.0.2", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241210174329.json b/.history/system_20241210174329.json new file mode 100644 index 0000000..b55ae92 --- /dev/null +++ b/.history/system_20241210174329.json @@ -0,0 +1,70 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "12.0.3", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241210231017.json b/.history/system_20241210231017.json new file mode 100644 index 0000000..b55ae92 --- /dev/null +++ b/.history/system_20241210231017.json @@ -0,0 +1,70 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "12.0.3", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/system_20241217070806.json b/.history/system_20241217070806.json new file mode 100644 index 0000000..7b14e91 --- /dev/null +++ b/.history/system_20241217070806.json @@ -0,0 +1,70 @@ +{ + "id": "fvtt-lethal-fantasy", + "title": "Lethal Fantasy RPG", + "description": "", + "manifest": "#{MANIFEST}#", + "download": "#{DOWNLOAD}#", + "url": "#{URL}#", + "license": "LICENSE", + "version": "12.0.4", + "authors": [ + { + "name": "Uberwald", + "discord": "LeRatierBretonnien" + } + ], + "compatibility": { + "minimum": "12", + "verified": "12" + }, + "esmodules": ["lethal-fantasy.mjs"], + "styles": ["css/fvtt-lethal-fantasy.css"], + "languages": [ + { + "lang": "en", + "name": "Anglais", + "path": "lang/en.json" + } + ], + "documentTypes": { + "Actor": { + "character": { "htmlFields": ["description", "notes"] }, + "opponent": { "htmlFields": ["description"] } + }, + "Item": { + "skill": { "htmlFields": ["description"] }, + "gift": { "htmlFields": ["description"] }, + "vulnerability": { "htmlFields": ["description"] }, + "weapon": { "htmlFields": ["description"] }, + "armor": { "htmlFields": ["description"] }, + "shield": { "htmlFields": ["description"] }, + "spell": { "htmlFields": ["description"] }, + "equipment": { "htmlFields": ["description"] }, + "miracle": { "htmlFields": ["miracle"] } + } + }, + "grid": { + "distance": 10, + "units": "m" + }, + "primaryTokenAttribute": "hp", + "socket": true, + "background": "systems/fvtt-lethal-fantasy/assets/background.webp", + "packs": [ + ], + "flags": { + "hotReload": { + "extensions": [ + "css", + "hbs", + "json" + ], + "paths": [ + "css/", + "lang/", + "assets/", + "templates/" + ] + } + } +} diff --git a/.history/templates/armor_20241201145025.hbs b/.history/templates/armor_20241201145025.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241201145025.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070528.hbs b/.history/templates/armor_20241210070528.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070528.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070529.hbs b/.history/templates/armor_20241210070529.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070529.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070530.hbs b/.history/templates/armor_20241210070530.hbs new file mode 100644 index 0000000..5a4190d --- /dev/null +++ b/.history/templates/armor_20241210070530.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.descriptions + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070533.hbs b/.history/templates/armor_20241210070533.hbs new file mode 100644 index 0000000..5a4190d --- /dev/null +++ b/.history/templates/armor_20241210070533.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.descriptions + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070534.hbs b/.history/templates/armor_20241210070534.hbs new file mode 100644 index 0000000..5a4190d --- /dev/null +++ b/.history/templates/armor_20241210070534.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.descriptions + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070701.hbs b/.history/templates/armor_20241210070701.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070701.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070736.hbs b/.history/templates/armor_20241210070736.hbs new file mode 100644 index 0000000..5638a65 --- /dev/null +++ b/.history/templates/armor_20241210070736.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070751.hbs b/.history/templates/armor_20241210070751.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070751.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070755.hbs b/.history/templates/armor_20241210070755.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070755.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070818.hbs b/.history/templates/armor_20241210070818.hbs new file mode 100644 index 0000000..7ab06b3 --- /dev/null +++ b/.history/templates/armor_20241210070818.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070952.hbs b/.history/templates/armor_20241210070952.hbs new file mode 100644 index 0000000..0e950ec --- /dev/null +++ b/.history/templates/armor_20241210070952.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.movementreduction}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210070955.hbs b/.history/templates/armor_20241210070955.hbs new file mode 100644 index 0000000..0dbc61b --- /dev/null +++ b/.history/templates/armor_20241210070955.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armortype value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071015.hbs b/.history/templates/armor_20241210071015.hbs new file mode 100644 index 0000000..8155b52 --- /dev/null +++ b/.history/templates/armor_20241210071015.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damagereduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071020.hbs b/.history/templates/armor_20241210071020.hbs new file mode 100644 index 0000000..63eee1c --- /dev/null +++ b/.history/templates/armor_20241210071020.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damagereduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071023.hbs b/.history/templates/armor_20241210071023.hbs new file mode 100644 index 0000000..faa2ec9 --- /dev/null +++ b/.history/templates/armor_20241210071023.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armortype localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071034.hbs b/.history/templates/armor_20241210071034.hbs new file mode 100644 index 0000000..6bcd12e --- /dev/null +++ b/.history/templates/armor_20241210071034.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071035.hbs b/.history/templates/armor_20241210071035.hbs new file mode 100644 index 0000000..6bcd12e --- /dev/null +++ b/.history/templates/armor_20241210071035.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071641.hbs b/.history/templates/armor_20241210071641.hbs new file mode 100644 index 0000000..7d54c9a --- /dev/null +++ b/.history/templates/armor_20241210071641.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.load value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071642.hbs b/.history/templates/armor_20241210071642.hbs new file mode 100644 index 0000000..0aa6044 --- /dev/null +++ b/.history/templates/armor_20241210071642.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210071758.hbs b/.history/templates/armor_20241210071758.hbs new file mode 100644 index 0000000..0bcc52e --- /dev/null +++ b/.history/templates/armor_20241210071758.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210072317.hbs b/.history/templates/armor_20241210072317.hbs new file mode 100644 index 0000000..a4f5be5 --- /dev/null +++ b/.history/templates/armor_20241210072317.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210072318.hbs b/.history/templates/armor_20241210072318.hbs new file mode 100644 index 0000000..a4f5be5 --- /dev/null +++ b/.history/templates/armor_20241210072318.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172459.hbs b/.history/templates/armor_20241210172459.hbs new file mode 100644 index 0000000..ff8f9b9 --- /dev/null +++ b/.history/templates/armor_20241210172459.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172503.hbs b/.history/templates/armor_20241210172503.hbs new file mode 100644 index 0000000..883ba77 --- /dev/null +++ b/.history/templates/armor_20241210172503.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.iShield value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172506.hbs b/.history/templates/armor_20241210172506.hbs new file mode 100644 index 0000000..8e8bc39 --- /dev/null +++ b/.history/templates/armor_20241210172506.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172508.hbs b/.history/templates/armor_20241210172508.hbs new file mode 100644 index 0000000..0ef9004 --- /dev/null +++ b/.history/templates/armor_20241210172508.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172510.hbs b/.history/templates/armor_20241210172510.hbs new file mode 100644 index 0000000..438c745 --- /dev/null +++ b/.history/templates/armor_20241210172510.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + {{formField systemFields.isShield value=system.isShield}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172514.hbs b/.history/templates/armor_20241210172514.hbs new file mode 100644 index 0000000..75d2d48 --- /dev/null +++ b/.history/templates/armor_20241210172514.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + {{formField systemFields.equipped value=system.isShield}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210172515.hbs b/.history/templates/armor_20241210172515.hbs new file mode 100644 index 0000000..790845e --- /dev/null +++ b/.history/templates/armor_20241210172515.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210173347.hbs b/.history/templates/armor_20241210173347.hbs new file mode 100644 index 0000000..790845e --- /dev/null +++ b/.history/templates/armor_20241210173347.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210173505.hbs b/.history/templates/armor_20241210173505.hbs new file mode 100644 index 0000000..790845e --- /dev/null +++ b/.history/templates/armor_20241210173505.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isShield value=system.isShield}} + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210173931.hbs b/.history/templates/armor_20241210173931.hbs new file mode 100644 index 0000000..93924bd --- /dev/null +++ b/.history/templates/armor_20241210173931.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isHelmet value=system.isShield}} + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/armor_20241210173933.hbs b/.history/templates/armor_20241210173933.hbs new file mode 100644 index 0000000..ae4daf9 --- /dev/null +++ b/.history/templates/armor_20241210173933.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.armorType value=system.armorType localize=true}} + {{formField systemFields.defense value=system.defense}} + {{formField systemFields.maximumMovement value=system.maximumMovement}} + {{formField systemFields.hp value=system.hp}} + {{formField systemFields.damageReduction value=system.damageReduction}} + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.isHelmet value=system.isHelmet}} + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/character-biography_20241207082848.hbs b/.history/templates/character-biography_20241207082848.hbs new file mode 100644 index 0000000..e8e9b44 --- /dev/null +++ b/.history/templates/character-biography_20241207082848.hbs @@ -0,0 +1,10 @@ +
+
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+
+ {{localize "LETHALFANTASY.Label.notes"}} + {{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}} +
+
\ No newline at end of file diff --git a/.history/templates/character-biography_20241208154119.hbs b/.history/templates/character-biography_20241208154119.hbs new file mode 100644 index 0000000..e8e9b44 --- /dev/null +++ b/.history/templates/character-biography_20241208154119.hbs @@ -0,0 +1,10 @@ +
+
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+
+ {{localize "LETHALFANTASY.Label.notes"}} + {{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}} +
+
\ No newline at end of file diff --git a/.history/templates/character-main_20241207223924.hbs b/.history/templates/character-main_20241207223924.hbs new file mode 100644 index 0000000..d687544 --- /dev/null +++ b/.history/templates/character-main_20241207223924.hbs @@ -0,0 +1,110 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205056.hbs b/.history/templates/character-main_20241210205056.hbs new file mode 100644 index 0000000..74b5da2 --- /dev/null +++ b/.history/templates/character-main_20241210205056.hbs @@ -0,0 +1,111 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205104.hbs b/.history/templates/character-main_20241210205104.hbs new file mode 100644 index 0000000..c906dc9 --- /dev/null +++ b/.history/templates/character-main_20241210205104.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205109.hbs b/.history/templates/character-main_20241210205109.hbs new file mode 100644 index 0000000..b15a40b --- /dev/null +++ b/.history/templates/character-main_20241210205109.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205110.hbs b/.history/templates/character-main_20241210205110.hbs new file mode 100644 index 0000000..b15a40b --- /dev/null +++ b/.history/templates/character-main_20241210205110.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205150.hbs b/.history/templates/character-main_20241210205150.hbs new file mode 100644 index 0000000..3daa8ce --- /dev/null +++ b/.history/templates/character-main_20241210205150.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.sa"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205152.hbs b/.history/templates/character-main_20241210205152.hbs new file mode 100644 index 0000000..cc1d882 --- /dev/null +++ b/.history/templates/character-main_20241210205152.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205157.hbs b/.history/templates/character-main_20241210205157.hbs new file mode 100644 index 0000000..021dde9 --- /dev/null +++ b/.history/templates/character-main_20241210205157.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205202.hbs b/.history/templates/character-main_20241210205202.hbs new file mode 100644 index 0000000..4f9e179 --- /dev/null +++ b/.history/templates/character-main_20241210205202.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205230.hbs b/.history/templates/character-main_20241210205230.hbs new file mode 100644 index 0000000..53a1611 --- /dev/null +++ b/.history/templates/character-main_20241210205230.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205232.hbs b/.history/templates/character-main_20241210205232.hbs new file mode 100644 index 0000000..7b03fc7 --- /dev/null +++ b/.history/templates/character-main_20241210205232.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205233.hbs b/.history/templates/character-main_20241210205233.hbs new file mode 100644 index 0000000..7b03fc7 --- /dev/null +++ b/.history/templates/character-main_20241210205233.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205235.hbs b/.history/templates/character-main_20241210205235.hbs new file mode 100644 index 0000000..970acbf --- /dev/null +++ b/.history/templates/character-main_20241210205235.hbs @@ -0,0 +1,118 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205236.hbs b/.history/templates/character-main_20241210205236.hbs new file mode 100644 index 0000000..970acbf --- /dev/null +++ b/.history/templates/character-main_20241210205236.hbs @@ -0,0 +1,118 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205244.hbs b/.history/templates/character-main_20241210205244.hbs new file mode 100644 index 0000000..14fa7ba --- /dev/null +++ b/.history/templates/character-main_20241210205244.hbs @@ -0,0 +1,118 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205245.hbs b/.history/templates/character-main_20241210205245.hbs new file mode 100644 index 0000000..6c48445 --- /dev/null +++ b/.history/templates/character-main_20241210205245.hbs @@ -0,0 +1,118 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205246.hbs b/.history/templates/character-main_20241210205246.hbs new file mode 100644 index 0000000..6c48445 --- /dev/null +++ b/.history/templates/character-main_20241210205246.hbs @@ -0,0 +1,118 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205247.hbs b/.history/templates/character-main_20241210205247.hbs new file mode 100644 index 0000000..3306e76 --- /dev/null +++ b/.history/templates/character-main_20241210205247.hbs @@ -0,0 +1,117 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205249.hbs b/.history/templates/character-main_20241210205249.hbs new file mode 100644 index 0000000..93a768a --- /dev/null +++ b/.history/templates/character-main_20241210205249.hbs @@ -0,0 +1,115 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205250.hbs b/.history/templates/character-main_20241210205250.hbs new file mode 100644 index 0000000..93a768a --- /dev/null +++ b/.history/templates/character-main_20241210205250.hbs @@ -0,0 +1,115 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+ +
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205251.hbs b/.history/templates/character-main_20241210205251.hbs new file mode 100644 index 0000000..3006fa5 --- /dev/null +++ b/.history/templates/character-main_20241210205251.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.save.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210205444.hbs b/.history/templates/character-main_20241210205444.hbs new file mode 100644 index 0000000..6b4d275 --- /dev/null +++ b/.history/templates/character-main_20241210205444.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211349.hbs b/.history/templates/character-main_20241210211349.hbs new file mode 100644 index 0000000..fd9b38d --- /dev/null +++ b/.history/templates/character-main_20241210211349.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211350.hbs b/.history/templates/character-main_20241210211350.hbs new file mode 100644 index 0000000..fd9b38d --- /dev/null +++ b/.history/templates/character-main_20241210211350.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211351.hbs b/.history/templates/character-main_20241210211351.hbs new file mode 100644 index 0000000..fd9b38d --- /dev/null +++ b/.history/templates/character-main_20241210211351.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211354.hbs b/.history/templates/character-main_20241210211354.hbs new file mode 100644 index 0000000..b0c2d78 --- /dev/null +++ b/.history/templates/character-main_20241210211354.hbs @@ -0,0 +1,113 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211355.hbs b/.history/templates/character-main_20241210211355.hbs new file mode 100644 index 0000000..b0c2d78 --- /dev/null +++ b/.history/templates/character-main_20241210211355.hbs @@ -0,0 +1,113 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211356.hbs b/.history/templates/character-main_20241210211356.hbs new file mode 100644 index 0000000..b0c2d78 --- /dev/null +++ b/.history/templates/character-main_20241210211356.hbs @@ -0,0 +1,113 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211404.hbs b/.history/templates/character-main_20241210211404.hbs new file mode 100644 index 0000000..72dbf81 --- /dev/null +++ b/.history/templates/character-main_20241210211404.hbs @@ -0,0 +1,114 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211405.hbs b/.history/templates/character-main_20241210211405.hbs new file mode 100644 index 0000000..f9cf0a5 --- /dev/null +++ b/.history/templates/character-main_20241210211405.hbs @@ -0,0 +1,115 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211409.hbs b/.history/templates/character-main_20241210211409.hbs new file mode 100644 index 0000000..2cb4d8a --- /dev/null +++ b/.history/templates/character-main_20241210211409.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211424.hbs b/.history/templates/character-main_20241210211424.hbs new file mode 100644 index 0000000..dcbd70d --- /dev/null +++ b/.history/templates/character-main_20241210211424.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211426.hbs b/.history/templates/character-main_20241210211426.hbs new file mode 100644 index 0000000..d625ae0 --- /dev/null +++ b/.history/templates/character-main_20241210211426.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211427.hbs b/.history/templates/character-main_20241210211427.hbs new file mode 100644 index 0000000..0eab0b8 --- /dev/null +++ b/.history/templates/character-main_20241210211427.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211429.hbs b/.history/templates/character-main_20241210211429.hbs new file mode 100644 index 0000000..e0a6805 --- /dev/null +++ b/.history/templates/character-main_20241210211429.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211456.hbs b/.history/templates/character-main_20241210211456.hbs new file mode 100644 index 0000000..c01edb2 --- /dev/null +++ b/.history/templates/character-main_20241210211456.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211513.hbs b/.history/templates/character-main_20241210211513.hbs new file mode 100644 index 0000000..29c3b2e --- /dev/null +++ b/.history/templates/character-main_20241210211513.hbs @@ -0,0 +1,117 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211515.hbs b/.history/templates/character-main_20241210211515.hbs new file mode 100644 index 0000000..a04af6a --- /dev/null +++ b/.history/templates/character-main_20241210211515.hbs @@ -0,0 +1,119 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211524.hbs b/.history/templates/character-main_20241210211524.hbs new file mode 100644 index 0000000..11629ce --- /dev/null +++ b/.history/templates/character-main_20241210211524.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211538.hbs b/.history/templates/character-main_20241210211538.hbs new file mode 100644 index 0000000..68d702d --- /dev/null +++ b/.history/templates/character-main_20241210211538.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.Toughness"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211540.hbs b/.history/templates/character-main_20241210211540.hbs new file mode 100644 index 0000000..12f1d86 --- /dev/null +++ b/.history/templates/character-main_20241210211540.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.Toughness"}} + {{formField systemFields.saves.fields.Toughness.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211542.hbs b/.history/templates/character-main_20241210211542.hbs new file mode 100644 index 0000000..368831b --- /dev/null +++ b/.history/templates/character-main_20241210211542.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.Toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211546.hbs b/.history/templates/character-main_20241210211546.hbs new file mode 100644 index 0000000..e01ea9f --- /dev/null +++ b/.history/templates/character-main_20241210211546.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.Toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211556.hbs b/.history/templates/character-main_20241210211556.hbs new file mode 100644 index 0000000..b13e19f --- /dev/null +++ b/.history/templates/character-main_20241210211556.hbs @@ -0,0 +1,121 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211559.hbs b/.history/templates/character-main_20241210211559.hbs new file mode 100644 index 0000000..ff12d04 --- /dev/null +++ b/.history/templates/character-main_20241210211559.hbs @@ -0,0 +1,123 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211612.hbs b/.history/templates/character-main_20241210211612.hbs new file mode 100644 index 0000000..04fc301 --- /dev/null +++ b/.history/templates/character-main_20241210211612.hbs @@ -0,0 +1,123 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} + {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211614.hbs b/.history/templates/character-main_20241210211614.hbs new file mode 100644 index 0000000..547b490 --- /dev/null +++ b/.history/templates/character-main_20241210211614.hbs @@ -0,0 +1,123 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} + {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} +
+
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211618.hbs b/.history/templates/character-main_20241210211618.hbs new file mode 100644 index 0000000..2b1ebb9 --- /dev/null +++ b/.history/templates/character-main_20241210211618.hbs @@ -0,0 +1,123 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211620.hbs b/.history/templates/character-main_20241210211620.hbs new file mode 100644 index 0000000..e9f49b4 --- /dev/null +++ b/.history/templates/character-main_20241210211620.hbs @@ -0,0 +1,125 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211628.hbs b/.history/templates/character-main_20241210211628.hbs new file mode 100644 index 0000000..b889536 --- /dev/null +++ b/.history/templates/character-main_20241210211628.hbs @@ -0,0 +1,125 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211629.hbs b/.history/templates/character-main_20241210211629.hbs new file mode 100644 index 0000000..9f37971 --- /dev/null +++ b/.history/templates/character-main_20241210211629.hbs @@ -0,0 +1,125 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211630.hbs b/.history/templates/character-main_20241210211630.hbs new file mode 100644 index 0000000..4b04903 --- /dev/null +++ b/.history/templates/character-main_20241210211630.hbs @@ -0,0 +1,125 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211631.hbs b/.history/templates/character-main_20241210211631.hbs new file mode 100644 index 0000000..54f0361 --- /dev/null +++ b/.history/templates/character-main_20241210211631.hbs @@ -0,0 +1,127 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211639.hbs b/.history/templates/character-main_20241210211639.hbs new file mode 100644 index 0000000..c8db3fa --- /dev/null +++ b/.history/templates/character-main_20241210211639.hbs @@ -0,0 +1,127 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211640.hbs b/.history/templates/character-main_20241210211640.hbs new file mode 100644 index 0000000..8161f88 --- /dev/null +++ b/.history/templates/character-main_20241210211640.hbs @@ -0,0 +1,127 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211641.hbs b/.history/templates/character-main_20241210211641.hbs new file mode 100644 index 0000000..ee10319 --- /dev/null +++ b/.history/templates/character-main_20241210211641.hbs @@ -0,0 +1,127 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211642.hbs b/.history/templates/character-main_20241210211642.hbs new file mode 100644 index 0000000..b4ae868 --- /dev/null +++ b/.history/templates/character-main_20241210211642.hbs @@ -0,0 +1,127 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211723.hbs b/.history/templates/character-main_20241210211723.hbs new file mode 100644 index 0000000..79a95d9 --- /dev/null +++ b/.history/templates/character-main_20241210211723.hbs @@ -0,0 +1,128 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211726.hbs b/.history/templates/character-main_20241210211726.hbs new file mode 100644 index 0000000..e3148d4 --- /dev/null +++ b/.history/templates/character-main_20241210211726.hbs @@ -0,0 +1,129 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211727.hbs b/.history/templates/character-main_20241210211727.hbs new file mode 100644 index 0000000..a8ebacd --- /dev/null +++ b/.history/templates/character-main_20241210211727.hbs @@ -0,0 +1,129 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211732.hbs b/.history/templates/character-main_20241210211732.hbs new file mode 100644 index 0000000..07fe51f --- /dev/null +++ b/.history/templates/character-main_20241210211732.hbs @@ -0,0 +1,130 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+ + +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211733.hbs b/.history/templates/character-main_20241210211733.hbs new file mode 100644 index 0000000..a936eb8 --- /dev/null +++ b/.history/templates/character-main_20241210211733.hbs @@ -0,0 +1,130 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211734.hbs b/.history/templates/character-main_20241210211734.hbs new file mode 100644 index 0000000..255cb7d --- /dev/null +++ b/.history/templates/character-main_20241210211734.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211746.hbs b/.history/templates/character-main_20241210211746.hbs new file mode 100644 index 0000000..7bfcd04 --- /dev/null +++ b/.history/templates/character-main_20241210211746.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211837.hbs b/.history/templates/character-main_20241210211837.hbs new file mode 100644 index 0000000..3fcf9dc --- /dev/null +++ b/.history/templates/character-main_20241210211837.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211838.hbs b/.history/templates/character-main_20241210211838.hbs new file mode 100644 index 0000000..5e9d728 --- /dev/null +++ b/.history/templates/character-main_20241210211838.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211847.hbs b/.history/templates/character-main_20241210211847.hbs new file mode 100644 index 0000000..1e7a6c6 --- /dev/null +++ b/.history/templates/character-main_20241210211847.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210211856.hbs b/.history/templates/character-main_20241210211856.hbs new file mode 100644 index 0000000..1e7a6c6 --- /dev/null +++ b/.history/templates/character-main_20241210211856.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212330.hbs b/.history/templates/character-main_20241210212330.hbs new file mode 100644 index 0000000..2096d9c --- /dev/null +++ b/.history/templates/character-main_20241210212330.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212332.hbs b/.history/templates/character-main_20241210212332.hbs new file mode 100644 index 0000000..a6cf462 --- /dev/null +++ b/.history/templates/character-main_20241210212332.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212335.hbs b/.history/templates/character-main_20241210212335.hbs new file mode 100644 index 0000000..3989054 --- /dev/null +++ b/.history/templates/character-main_20241210212335.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212338.hbs b/.history/templates/character-main_20241210212338.hbs new file mode 100644 index 0000000..095c34c --- /dev/null +++ b/.history/templates/character-main_20241210212338.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212340.hbs b/.history/templates/character-main_20241210212340.hbs new file mode 100644 index 0000000..49c81ff --- /dev/null +++ b/.history/templates/character-main_20241210212340.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212511.hbs b/.history/templates/character-main_20241210212511.hbs new file mode 100644 index 0000000..3713e52 --- /dev/null +++ b/.history/templates/character-main_20241210212511.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212515.hbs b/.history/templates/character-main_20241210212515.hbs new file mode 100644 index 0000000..b66b4e6 --- /dev/null +++ b/.history/templates/character-main_20241210212515.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212531.hbs b/.history/templates/character-main_20241210212531.hbs new file mode 100644 index 0000000..edb568a --- /dev/null +++ b/.history/templates/character-main_20241210212531.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212533.hbs b/.history/templates/character-main_20241210212533.hbs new file mode 100644 index 0000000..dfc8f20 --- /dev/null +++ b/.history/templates/character-main_20241210212533.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212541.hbs b/.history/templates/character-main_20241210212541.hbs new file mode 100644 index 0000000..8722cb3 --- /dev/null +++ b/.history/templates/character-main_20241210212541.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212543.hbs b/.history/templates/character-main_20241210212543.hbs new file mode 100644 index 0000000..0123f5f --- /dev/null +++ b/.history/templates/character-main_20241210212543.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212548.hbs b/.history/templates/character-main_20241210212548.hbs new file mode 100644 index 0000000..93663f2 --- /dev/null +++ b/.history/templates/character-main_20241210212548.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212551.hbs b/.history/templates/character-main_20241210212551.hbs new file mode 100644 index 0000000..570594d --- /dev/null +++ b/.history/templates/character-main_20241210212551.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212552.hbs b/.history/templates/character-main_20241210212552.hbs new file mode 100644 index 0000000..93663f2 --- /dev/null +++ b/.history/templates/character-main_20241210212552.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212554.hbs b/.history/templates/character-main_20241210212554.hbs new file mode 100644 index 0000000..19c95c5 --- /dev/null +++ b/.history/templates/character-main_20241210212554.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212556.hbs b/.history/templates/character-main_20241210212556.hbs new file mode 100644 index 0000000..5cf29ff --- /dev/null +++ b/.history/templates/character-main_20241210212556.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212559.hbs b/.history/templates/character-main_20241210212559.hbs new file mode 100644 index 0000000..1436b59 --- /dev/null +++ b/.history/templates/character-main_20241210212559.hbs @@ -0,0 +1,136 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212723.hbs b/.history/templates/character-main_20241210212723.hbs new file mode 100644 index 0000000..e12397e --- /dev/null +++ b/.history/templates/character-main_20241210212723.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212728.hbs b/.history/templates/character-main_20241210212728.hbs new file mode 100644 index 0000000..1d3f356 --- /dev/null +++ b/.history/templates/character-main_20241210212728.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212732.hbs b/.history/templates/character-main_20241210212732.hbs new file mode 100644 index 0000000..c03078c --- /dev/null +++ b/.history/templates/character-main_20241210212732.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212734.hbs b/.history/templates/character-main_20241210212734.hbs new file mode 100644 index 0000000..47adde4 --- /dev/null +++ b/.history/templates/character-main_20241210212734.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212738.hbs b/.history/templates/character-main_20241210212738.hbs new file mode 100644 index 0000000..441a278 --- /dev/null +++ b/.history/templates/character-main_20241210212738.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212741.hbs b/.history/templates/character-main_20241210212741.hbs new file mode 100644 index 0000000..f8fec30 --- /dev/null +++ b/.history/templates/character-main_20241210212741.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212754.hbs b/.history/templates/character-main_20241210212754.hbs new file mode 100644 index 0000000..854e2f6 --- /dev/null +++ b/.history/templates/character-main_20241210212754.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212755.hbs b/.history/templates/character-main_20241210212755.hbs new file mode 100644 index 0000000..a2cb872 --- /dev/null +++ b/.history/templates/character-main_20241210212755.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212758.hbs b/.history/templates/character-main_20241210212758.hbs new file mode 100644 index 0000000..d84fb5b --- /dev/null +++ b/.history/templates/character-main_20241210212758.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212805.hbs b/.history/templates/character-main_20241210212805.hbs new file mode 100644 index 0000000..a97048d --- /dev/null +++ b/.history/templates/character-main_20241210212805.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212809.hbs b/.history/templates/character-main_20241210212809.hbs new file mode 100644 index 0000000..35c1934 --- /dev/null +++ b/.history/templates/character-main_20241210212809.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212815.hbs b/.history/templates/character-main_20241210212815.hbs new file mode 100644 index 0000000..cc0e932 --- /dev/null +++ b/.history/templates/character-main_20241210212815.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212819.hbs b/.history/templates/character-main_20241210212819.hbs new file mode 100644 index 0000000..94dfaf4 --- /dev/null +++ b/.history/templates/character-main_20241210212819.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212821.hbs b/.history/templates/character-main_20241210212821.hbs new file mode 100644 index 0000000..334a9ca --- /dev/null +++ b/.history/templates/character-main_20241210212821.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212824.hbs b/.history/templates/character-main_20241210212824.hbs new file mode 100644 index 0000000..0dfe49d --- /dev/null +++ b/.history/templates/character-main_20241210212824.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212826.hbs b/.history/templates/character-main_20241210212826.hbs new file mode 100644 index 0000000..520a839 --- /dev/null +++ b/.history/templates/character-main_20241210212826.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212828.hbs b/.history/templates/character-main_20241210212828.hbs new file mode 100644 index 0000000..aea9f52 --- /dev/null +++ b/.history/templates/character-main_20241210212828.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212829.hbs b/.history/templates/character-main_20241210212829.hbs new file mode 100644 index 0000000..380250a --- /dev/null +++ b/.history/templates/character-main_20241210212829.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212832.hbs b/.history/templates/character-main_20241210212832.hbs new file mode 100644 index 0000000..d30c4d3 --- /dev/null +++ b/.history/templates/character-main_20241210212832.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212835.hbs b/.history/templates/character-main_20241210212835.hbs new file mode 100644 index 0000000..f67acb4 --- /dev/null +++ b/.history/templates/character-main_20241210212835.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.save.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212844.hbs b/.history/templates/character-main_20241210212844.hbs new file mode 100644 index 0000000..6957007 --- /dev/null +++ b/.history/templates/character-main_20241210212844.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.save.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212846.hbs b/.history/templates/character-main_20241210212846.hbs new file mode 100644 index 0000000..6250cb6 --- /dev/null +++ b/.history/templates/character-main_20241210212846.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.save.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212847.hbs b/.history/templates/character-main_20241210212847.hbs new file mode 100644 index 0000000..e04a647 --- /dev/null +++ b/.history/templates/character-main_20241210212847.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.save.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212850.hbs b/.history/templates/character-main_20241210212850.hbs new file mode 100644 index 0000000..4c3efca --- /dev/null +++ b/.history/templates/character-main_20241210212850.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.save.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212851.hbs b/.history/templates/character-main_20241210212851.hbs new file mode 100644 index 0000000..1f0c743 --- /dev/null +++ b/.history/templates/character-main_20241210212851.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saved.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212852.hbs b/.history/templates/character-main_20241210212852.hbs new file mode 100644 index 0000000..b04f50c --- /dev/null +++ b/.history/templates/character-main_20241210212852.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.save.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212853.hbs b/.history/templates/character-main_20241210212853.hbs new file mode 100644 index 0000000..8138b36 --- /dev/null +++ b/.history/templates/character-main_20241210212853.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212854.hbs b/.history/templates/character-main_20241210212854.hbs new file mode 100644 index 0000000..8138b36 --- /dev/null +++ b/.history/templates/character-main_20241210212854.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212855.hbs b/.history/templates/character-main_20241210212855.hbs new file mode 100644 index 0000000..8138b36 --- /dev/null +++ b/.history/templates/character-main_20241210212855.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212926.hbs b/.history/templates/character-main_20241210212926.hbs new file mode 100644 index 0000000..8138b36 --- /dev/null +++ b/.history/templates/character-main_20241210212926.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.save.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212948.hbs b/.history/templates/character-main_20241210212948.hbs new file mode 100644 index 0000000..2237c24 --- /dev/null +++ b/.history/templates/character-main_20241210212948.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.save.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212949.hbs b/.history/templates/character-main_20241210212949.hbs new file mode 100644 index 0000000..78b2904 --- /dev/null +++ b/.history/templates/character-main_20241210212949.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.save.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212950.hbs b/.history/templates/character-main_20241210212950.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210212950.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210212951.hbs b/.history/templates/character-main_20241210212951.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210212951.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225237.hbs b/.history/templates/character-main_20241210225237.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210225237.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225301.hbs b/.history/templates/character-main_20241210225301.hbs new file mode 100644 index 0000000..e01756c --- /dev/null +++ b/.history/templates/character-main_20241210225301.hbs @@ -0,0 +1,137 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ + +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225313.hbs b/.history/templates/character-main_20241210225313.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210225313.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225445.hbs b/.history/templates/character-main_20241210225445.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210225445.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225513.hbs b/.history/templates/character-main_20241210225513.hbs new file mode 100644 index 0000000..fb2c01d --- /dev/null +++ b/.history/templates/character-main_20241210225513.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225626.hbs b/.history/templates/character-main_20241210225626.hbs new file mode 100644 index 0000000..93037bb --- /dev/null +++ b/.history/templates/character-main_20241210225626.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="will" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225631.hbs b/.history/templates/character-main_20241210225631.hbs new file mode 100644 index 0000000..98287e6 --- /dev/null +++ b/.history/templates/character-main_20241210225631.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225633.hbs b/.history/templates/character-main_20241210225633.hbs new file mode 100644 index 0000000..c5d3d6d --- /dev/null +++ b/.history/templates/character-main_20241210225633.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="dodge" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225635.hbs b/.history/templates/character-main_20241210225635.hbs new file mode 100644 index 0000000..ea4a059 --- /dev/null +++ b/.history/templates/character-main_20241210225635.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225639.hbs b/.history/templates/character-main_20241210225639.hbs new file mode 100644 index 0000000..60b7340 --- /dev/null +++ b/.history/templates/character-main_20241210225639.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-save-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225642.hbs b/.history/templates/character-main_20241210225642.hbs new file mode 100644 index 0000000..0057ffe --- /dev/null +++ b/.history/templates/character-main_20241210225642.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225643.hbs b/.history/templates/character-main_20241210225643.hbs new file mode 100644 index 0000000..0057ffe --- /dev/null +++ b/.history/templates/character-main_20241210225643.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225700.hbs b/.history/templates/character-main_20241210225700.hbs new file mode 100644 index 0000000..0057ffe --- /dev/null +++ b/.history/templates/character-main_20241210225700.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.strength.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225725.hbs b/.history/templates/character-main_20241210225725.hbs new file mode 100644 index 0000000..63a59e0 --- /dev/null +++ b/.history/templates/character-main_20241210225725.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.strength.value disabled=isPlayMode + classes="rollable" data-challenge-id="strength" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225728.hbs b/.history/templates/character-main_20241210225728.hbs new file mode 100644 index 0000000..0fd0b7b --- /dev/null +++ b/.history/templates/character-main_20241210225728.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225730.hbs b/.history/templates/character-main_20241210225730.hbs new file mode 100644 index 0000000..0fd0b7b --- /dev/null +++ b/.history/templates/character-main_20241210225730.hbs @@ -0,0 +1,153 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225939.hbs b/.history/templates/character-main_20241210225939.hbs new file mode 100644 index 0000000..8ec388a --- /dev/null +++ b/.history/templates/character-main_20241210225939.hbs @@ -0,0 +1,155 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+
+ +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225941.hbs b/.history/templates/character-main_20241210225941.hbs new file mode 100644 index 0000000..a20b7f1 --- /dev/null +++ b/.history/templates/character-main_20241210225941.hbs @@ -0,0 +1,156 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225942.hbs b/.history/templates/character-main_20241210225942.hbs new file mode 100644 index 0000000..f6505bb --- /dev/null +++ b/.history/templates/character-main_20241210225942.hbs @@ -0,0 +1,155 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225944.hbs b/.history/templates/character-main_20241210225944.hbs new file mode 100644 index 0000000..ac09a40 --- /dev/null +++ b/.history/templates/character-main_20241210225944.hbs @@ -0,0 +1,155 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225947.hbs b/.history/templates/character-main_20241210225947.hbs new file mode 100644 index 0000000..465d646 --- /dev/null +++ b/.history/templates/character-main_20241210225947.hbs @@ -0,0 +1,156 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225948.hbs b/.history/templates/character-main_20241210225948.hbs new file mode 100644 index 0000000..8a43b25 --- /dev/null +++ b/.history/templates/character-main_20241210225948.hbs @@ -0,0 +1,157 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210225951.hbs b/.history/templates/character-main_20241210225951.hbs new file mode 100644 index 0000000..8a43b25 --- /dev/null +++ b/.history/templates/character-main_20241210225951.hbs @@ -0,0 +1,157 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230000.hbs b/.history/templates/character-main_20241210230000.hbs new file mode 100644 index 0000000..0f4c823 --- /dev/null +++ b/.history/templates/character-main_20241210230000.hbs @@ -0,0 +1,158 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230003.hbs b/.history/templates/character-main_20241210230003.hbs new file mode 100644 index 0000000..7244080 --- /dev/null +++ b/.history/templates/character-main_20241210230003.hbs @@ -0,0 +1,158 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230004.hbs b/.history/templates/character-main_20241210230004.hbs new file mode 100644 index 0000000..7244080 --- /dev/null +++ b/.history/templates/character-main_20241210230004.hbs @@ -0,0 +1,158 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230047.hbs b/.history/templates/character-main_20241210230047.hbs new file mode 100644 index 0000000..7244080 --- /dev/null +++ b/.history/templates/character-main_20241210230047.hbs @@ -0,0 +1,158 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230052.hbs b/.history/templates/character-main_20241210230052.hbs new file mode 100644 index 0000000..9579f73 --- /dev/null +++ b/.history/templates/character-main_20241210230052.hbs @@ -0,0 +1,159 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+ < +
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230055.hbs b/.history/templates/character-main_20241210230055.hbs new file mode 100644 index 0000000..9de6eb3 --- /dev/null +++ b/.history/templates/character-main_20241210230055.hbs @@ -0,0 +1,161 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230059.hbs b/.history/templates/character-main_20241210230059.hbs new file mode 100644 index 0000000..5218f3c --- /dev/null +++ b/.history/templates/character-main_20241210230059.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230104.hbs b/.history/templates/character-main_20241210230104.hbs new file mode 100644 index 0000000..f6ec391 --- /dev/null +++ b/.history/templates/character-main_20241210230104.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230108.hbs b/.history/templates/character-main_20241210230108.hbs new file mode 100644 index 0000000..49cc68b --- /dev/null +++ b/.history/templates/character-main_20241210230108.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230109.hbs b/.history/templates/character-main_20241210230109.hbs new file mode 100644 index 0000000..49cc68b --- /dev/null +++ b/.history/templates/character-main_20241210230109.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230114.hbs b/.history/templates/character-main_20241210230114.hbs new file mode 100644 index 0000000..648fc09 --- /dev/null +++ b/.history/templates/character-main_20241210230114.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230117.hbs b/.history/templates/character-main_20241210230117.hbs new file mode 100644 index 0000000..06f3ae1 --- /dev/null +++ b/.history/templates/character-main_20241210230117.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.bonus value=system.perception.value disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230118.hbs b/.history/templates/character-main_20241210230118.hbs new file mode 100644 index 0000000..43388ef --- /dev/null +++ b/.history/templates/character-main_20241210230118.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} + +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230119.hbs b/.history/templates/character-main_20241210230119.hbs new file mode 100644 index 0000000..35c0e64 --- /dev/null +++ b/.history/templates/character-main_20241210230119.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230132.hbs b/.history/templates/character-main_20241210230132.hbs new file mode 100644 index 0000000..35c0e64 --- /dev/null +++ b/.history/templates/character-main_20241210230132.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230150.hbs b/.history/templates/character-main_20241210230150.hbs new file mode 100644 index 0000000..6dd6e49 --- /dev/null +++ b/.history/templates/character-main_20241210230150.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230151.hbs b/.history/templates/character-main_20241210230151.hbs new file mode 100644 index 0000000..1e6580a --- /dev/null +++ b/.history/templates/character-main_20241210230151.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230206.hbs b/.history/templates/character-main_20241210230206.hbs new file mode 100644 index 0000000..3aa740f --- /dev/null +++ b/.history/templates/character-main_20241210230206.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230207.hbs b/.history/templates/character-main_20241210230207.hbs new file mode 100644 index 0000000..3aa740f --- /dev/null +++ b/.history/templates/character-main_20241210230207.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230208.hbs b/.history/templates/character-main_20241210230208.hbs new file mode 100644 index 0000000..3aa740f --- /dev/null +++ b/.history/templates/character-main_20241210230208.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230209.hbs b/.history/templates/character-main_20241210230209.hbs new file mode 100644 index 0000000..3aa740f --- /dev/null +++ b/.history/templates/character-main_20241210230209.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230217.hbs b/.history/templates/character-main_20241210230217.hbs new file mode 100644 index 0000000..6b37c96 --- /dev/null +++ b/.history/templates/character-main_20241210230217.hbs @@ -0,0 +1,162 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230424.hbs b/.history/templates/character-main_20241210230424.hbs new file mode 100644 index 0000000..85e175b --- /dev/null +++ b/.history/templates/character-main_20241210230424.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230427.hbs b/.history/templates/character-main_20241210230427.hbs new file mode 100644 index 0000000..a68ac54 --- /dev/null +++ b/.history/templates/character-main_20241210230427.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230442.hbs b/.history/templates/character-main_20241210230442.hbs new file mode 100644 index 0000000..bb95b3e --- /dev/null +++ b/.history/templates/character-main_20241210230442.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.P.saves.will"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230447.hbs b/.history/templates/character-main_20241210230447.hbs new file mode 100644 index 0000000..f4689c6 --- /dev/null +++ b/.history/templates/character-main_20241210230447.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230450.hbs b/.history/templates/character-main_20241210230450.hbs new file mode 100644 index 0000000..6dc0f94 --- /dev/null +++ b/.history/templates/character-main_20241210230450.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.perception"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230452.hbs b/.history/templates/character-main_20241210230452.hbs new file mode 100644 index 0000000..5091799 --- /dev/null +++ b/.history/templates/character-main_20241210230452.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230453.hbs b/.history/templates/character-main_20241210230453.hbs new file mode 100644 index 0000000..5091799 --- /dev/null +++ b/.history/templates/character-main_20241210230453.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formField systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230535.hbs b/.history/templates/character-main_20241210230535.hbs new file mode 100644 index 0000000..01e531b --- /dev/null +++ b/.history/templates/character-main_20241210230535.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formField systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230539.hbs b/.history/templates/character-main_20241210230539.hbs new file mode 100644 index 0000000..d143670 --- /dev/null +++ b/.history/templates/character-main_20241210230539.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+ {{localize "LETHALFANTASY.Label.HP"}} +
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230605.hbs b/.history/templates/character-main_20241210230605.hbs new file mode 100644 index 0000000..7bb8bdb --- /dev/null +++ b/.history/templates/character-main_20241210230605.hbs @@ -0,0 +1,163 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230613.hbs b/.history/templates/character-main_20241210230613.hbs new file mode 100644 index 0000000..d8546d5 --- /dev/null +++ b/.history/templates/character-main_20241210230613.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230616.hbs b/.history/templates/character-main_20241210230616.hbs new file mode 100644 index 0000000..868a1ee --- /dev/null +++ b/.history/templates/character-main_20241210230616.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230618.hbs b/.history/templates/character-main_20241210230618.hbs new file mode 100644 index 0000000..868a1ee --- /dev/null +++ b/.history/templates/character-main_20241210230618.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230622.hbs b/.history/templates/character-main_20241210230622.hbs new file mode 100644 index 0000000..868a1ee --- /dev/null +++ b/.history/templates/character-main_20241210230622.hbs @@ -0,0 +1,164 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230632.hbs b/.history/templates/character-main_20241210230632.hbs new file mode 100644 index 0000000..c19a1ca --- /dev/null +++ b/.history/templates/character-main_20241210230632.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230637.hbs b/.history/templates/character-main_20241210230637.hbs new file mode 100644 index 0000000..d3c9b60 --- /dev/null +++ b/.history/templates/character-main_20241210230637.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230640.hbs b/.history/templates/character-main_20241210230640.hbs new file mode 100644 index 0000000..46b778b --- /dev/null +++ b/.history/templates/character-main_20241210230640.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230645.hbs b/.history/templates/character-main_20241210230645.hbs new file mode 100644 index 0000000..0ba54b1 --- /dev/null +++ b/.history/templates/character-main_20241210230645.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230647.hbs b/.history/templates/character-main_20241210230647.hbs new file mode 100644 index 0000000..3ff5f6e --- /dev/null +++ b/.history/templates/character-main_20241210230647.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230651.hbs b/.history/templates/character-main_20241210230651.hbs new file mode 100644 index 0000000..3d2cad6 --- /dev/null +++ b/.history/templates/character-main_20241210230651.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.perception.fields.bonus value=system.grit.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230652.hbs b/.history/templates/character-main_20241210230652.hbs new file mode 100644 index 0000000..36ce637 --- /dev/null +++ b/.history/templates/character-main_20241210230652.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.bonus value=system.grit.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230655.hbs b/.history/templates/character-main_20241210230655.hbs new file mode 100644 index 0000000..f5a136d --- /dev/null +++ b/.history/templates/character-main_20241210230655.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230656.hbs b/.history/templates/character-main_20241210230656.hbs new file mode 100644 index 0000000..3c97d3c --- /dev/null +++ b/.history/templates/character-main_20241210230656.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.value value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230712.hbs b/.history/templates/character-main_20241210230712.hbs new file mode 100644 index 0000000..a6f5643 --- /dev/null +++ b/.history/templates/character-main_20241210230712.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230713.hbs b/.history/templates/character-main_20241210230713.hbs new file mode 100644 index 0000000..236759e --- /dev/null +++ b/.history/templates/character-main_20241210230713.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230715.hbs b/.history/templates/character-main_20241210230715.hbs new file mode 100644 index 0000000..236759e --- /dev/null +++ b/.history/templates/character-main_20241210230715.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230722.hbs b/.history/templates/character-main_20241210230722.hbs new file mode 100644 index 0000000..236759e --- /dev/null +++ b/.history/templates/character-main_20241210230722.hbs @@ -0,0 +1,170 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230812.hbs b/.history/templates/character-main_20241210230812.hbs new file mode 100644 index 0000000..3878d73 --- /dev/null +++ b/.history/templates/character-main_20241210230812.hbs @@ -0,0 +1,176 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230817.hbs b/.history/templates/character-main_20241210230817.hbs new file mode 100644 index 0000000..833beb2 --- /dev/null +++ b/.history/templates/character-main_20241210230817.hbs @@ -0,0 +1,176 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230821.hbs b/.history/templates/character-main_20241210230821.hbs new file mode 100644 index 0000000..1550746 --- /dev/null +++ b/.history/templates/character-main_20241210230821.hbs @@ -0,0 +1,176 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230827.hbs b/.history/templates/character-main_20241210230827.hbs new file mode 100644 index 0000000..6615ef9 --- /dev/null +++ b/.history/templates/character-main_20241210230827.hbs @@ -0,0 +1,176 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210230830.hbs b/.history/templates/character-main_20241210230830.hbs new file mode 100644 index 0000000..984e053 --- /dev/null +++ b/.history/templates/character-main_20241210230830.hbs @@ -0,0 +1,176 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231056.hbs b/.history/templates/character-main_20241210231056.hbs new file mode 100644 index 0000000..32805be --- /dev/null +++ b/.history/templates/character-main_20241210231056.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231101.hbs b/.history/templates/character-main_20241210231101.hbs new file mode 100644 index 0000000..69fe7c7 --- /dev/null +++ b/.history/templates/character-main_20241210231101.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231106.hbs b/.history/templates/character-main_20241210231106.hbs new file mode 100644 index 0000000..76de1d8 --- /dev/null +++ b/.history/templates/character-main_20241210231106.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231109.hbs b/.history/templates/character-main_20241210231109.hbs new file mode 100644 index 0000000..36e32e3 --- /dev/null +++ b/.history/templates/character-main_20241210231109.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231125.hbs b/.history/templates/character-main_20241210231125.hbs new file mode 100644 index 0000000..4ab4bf0 --- /dev/null +++ b/.history/templates/character-main_20241210231125.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231127.hbs b/.history/templates/character-main_20241210231127.hbs new file mode 100644 index 0000000..b5c01cb --- /dev/null +++ b/.history/templates/character-main_20241210231127.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231132.hbs b/.history/templates/character-main_20241210231132.hbs new file mode 100644 index 0000000..3b4d177 --- /dev/null +++ b/.history/templates/character-main_20241210231132.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231135.hbs b/.history/templates/character-main_20241210231135.hbs new file mode 100644 index 0000000..3b4d177 --- /dev/null +++ b/.history/templates/character-main_20241210231135.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231139.hbs b/.history/templates/character-main_20241210231139.hbs new file mode 100644 index 0000000..fce6fdd --- /dev/null +++ b/.history/templates/character-main_20241210231139.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231143.hbs b/.history/templates/character-main_20241210231143.hbs new file mode 100644 index 0000000..fe6c45d --- /dev/null +++ b/.history/templates/character-main_20241210231143.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231144.hbs b/.history/templates/character-main_20241210231144.hbs new file mode 100644 index 0000000..fe6c45d --- /dev/null +++ b/.history/templates/character-main_20241210231144.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231151.hbs b/.history/templates/character-main_20241210231151.hbs new file mode 100644 index 0000000..f6babf9 --- /dev/null +++ b/.history/templates/character-main_20241210231151.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231203.hbs b/.history/templates/character-main_20241210231203.hbs new file mode 100644 index 0000000..3d99822 --- /dev/null +++ b/.history/templates/character-main_20241210231203.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231208.hbs b/.history/templates/character-main_20241210231208.hbs new file mode 100644 index 0000000..d5237a0 --- /dev/null +++ b/.history/templates/character-main_20241210231208.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.agility.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231209.hbs b/.history/templates/character-main_20241210231209.hbs new file mode 100644 index 0000000..7eaaa8f --- /dev/null +++ b/.history/templates/character-main_20241210231209.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231219.hbs b/.history/templates/character-main_20241210231219.hbs new file mode 100644 index 0000000..545a6b7 --- /dev/null +++ b/.history/templates/character-main_20241210231219.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231222.hbs b/.history/templates/character-main_20241210231222.hbs new file mode 100644 index 0000000..8409e22 --- /dev/null +++ b/.history/templates/character-main_20241210231222.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.challenges.sprint.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231223.hbs b/.history/templates/character-main_20241210231223.hbs new file mode 100644 index 0000000..342b57f --- /dev/null +++ b/.history/templates/character-main_20241210231223.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.challenges.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231225.hbs b/.history/templates/character-main_20241210231225.hbs new file mode 100644 index 0000000..0a316d6 --- /dev/null +++ b/.history/templates/character-main_20241210231225.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231233.hbs b/.history/templates/character-main_20241210231233.hbs new file mode 100644 index 0000000..3f235a6 --- /dev/null +++ b/.history/templates/character-main_20241210231233.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.Movement.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231235.hbs b/.history/templates/character-main_20241210231235.hbs new file mode 100644 index 0000000..9f512fe --- /dev/null +++ b/.history/templates/character-main_20241210231235.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231240.hbs b/.history/templates/character-main_20241210231240.hbs new file mode 100644 index 0000000..bd36be7 --- /dev/null +++ b/.history/templates/character-main_20241210231240.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.strength"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.movement.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.movement.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231243.hbs b/.history/templates/character-main_20241210231243.hbs new file mode 100644 index 0000000..31ac6f8 --- /dev/null +++ b/.history/templates/character-main_20241210231243.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.movement.agility"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.movement.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231245.hbs b/.history/templates/character-main_20241210231245.hbs new file mode 100644 index 0000000..7e74a17 --- /dev/null +++ b/.history/templates/character-main_20241210231245.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.movement.dying"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231246.hbs b/.history/templates/character-main_20241210231246.hbs new file mode 100644 index 0000000..a20ba38 --- /dev/null +++ b/.history/templates/character-main_20241210231246.hbs @@ -0,0 +1,193 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231253.hbs b/.history/templates/character-main_20241210231253.hbs new file mode 100644 index 0000000..6084f53 --- /dev/null +++ b/.history/templates/character-main_20241210231253.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231257.hbs b/.history/templates/character-main_20241210231257.hbs new file mode 100644 index 0000000..657eda9 --- /dev/null +++ b/.history/templates/character-main_20241210231257.hbs @@ -0,0 +1,191 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231300.hbs b/.history/templates/character-main_20241210231300.hbs new file mode 100644 index 0000000..228875c --- /dev/null +++ b/.history/templates/character-main_20241210231300.hbs @@ -0,0 +1,190 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231301.hbs b/.history/templates/character-main_20241210231301.hbs new file mode 100644 index 0000000..228875c --- /dev/null +++ b/.history/templates/character-main_20241210231301.hbs @@ -0,0 +1,190 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231415.hbs b/.history/templates/character-main_20241210231415.hbs new file mode 100644 index 0000000..48b18e8 --- /dev/null +++ b/.history/templates/character-main_20241210231415.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231418.hbs b/.history/templates/character-main_20241210231418.hbs new file mode 100644 index 0000000..c7a37d2 --- /dev/null +++ b/.history/templates/character-main_20241210231418.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231422.hbs b/.history/templates/character-main_20241210231422.hbs new file mode 100644 index 0000000..2576cf6 --- /dev/null +++ b/.history/templates/character-main_20241210231422.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.run value=system.movement.run}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231428.hbs b/.history/templates/character-main_20241210231428.hbs new file mode 100644 index 0000000..2576cf6 --- /dev/null +++ b/.history/templates/character-main_20241210231428.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.run value=system.movement.run}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231441.hbs b/.history/templates/character-main_20241210231441.hbs new file mode 100644 index 0000000..c221fd1 --- /dev/null +++ b/.history/templates/character-main_20241210231441.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.run value=system.movement.run}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-main_20241210231442.hbs b/.history/templates/character-main_20241210231442.hbs new file mode 100644 index 0000000..0d87491 --- /dev/null +++ b/.history/templates/character-main_20241210231442.hbs @@ -0,0 +1,192 @@ +
+ {{!log "character-main" this}} + +
+ {{localize "LETHALFANTASY.Label.pc"}} +
+
+
+ +
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+ +
+
+
+ {{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}} + + + +
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.run value=system.movement.run disabled=isPlayMode}} +
+
+
+ +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.characteristics"}} +
+ {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.int"}} + {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value + disabled=isPlayMode classes="rollable" data-char-id="int" }} + + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.wis"}} + {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.dex"}} + {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value + disabled=isPlayMode classes="rollable" data-char-id="wis" }} + + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.con"}} + {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value + disabled=isPlayMode classes="rollable" data-char-id="con" }} + + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.cha"}} + {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value + disabled=isPlayMode classes="rollable" data-char-id="cha" }} + + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.luc"}} + {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value + disabled=isPlayMode classes="rollable" data-char-id="luc" }} + + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent + disabled=isPlayMode }} +
+
+ {{localize "LETHALFANTASY.Label.app"}} + {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value + disabled=isPlayMode classes="rollable" data-char-id="app" }} + + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent + disabled=isPlayMode }} +
+
+ +
+ {{localize "LETHALFANTASY.Label.resources"}} +
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-spells_20241207085616.hbs b/.history/templates/character-spells_20241207085616.hbs new file mode 100644 index 0000000..ed7a2a4 --- /dev/null +++ b/.history/templates/character-spells_20241207085616.hbs @@ -0,0 +1,27 @@ +
+ + {{#if hasSpells}} +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{/if}} +
\ No newline at end of file diff --git a/.history/templates/character-spells_20241208154207.hbs b/.history/templates/character-spells_20241208154207.hbs new file mode 100644 index 0000000..ed7a2a4 --- /dev/null +++ b/.history/templates/character-spells_20241208154207.hbs @@ -0,0 +1,27 @@ +
+ + {{#if hasSpells}} +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{/if}} +
\ No newline at end of file diff --git a/.history/templates/character-spells_20241208154208.hbs b/.history/templates/character-spells_20241208154208.hbs new file mode 100644 index 0000000..3ac6d65 --- /dev/null +++ b/.history/templates/character-spells_20241208154208.hbs @@ -0,0 +1,26 @@ +
+ +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{/if}} +
\ No newline at end of file diff --git a/.history/templates/character-spells_20241208154211.hbs b/.history/templates/character-spells_20241208154211.hbs new file mode 100644 index 0000000..0f47d3f --- /dev/null +++ b/.history/templates/character-spells_20241208154211.hbs @@ -0,0 +1,26 @@ +
+ +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ +
\ No newline at end of file diff --git a/.history/templates/character-weapons_20241207085046.hbs b/.history/templates/character-weapons_20241207085046.hbs new file mode 100644 index 0000000..522e788 --- /dev/null +++ b/.history/templates/character-weapons_20241207085046.hbs @@ -0,0 +1,70 @@ +
+ +
+ {{localize "LETHALFANTASY.Label.equipment"}}{{#if isEditMode}}{{/if}} +
+ {{#each weapons as |item|}} + {{!log 'weapon' this}} +
+ {{#if (ne item.img "icons/svg/item-bag.svg")}} + + {{/if}} +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{#each armors as |item|}} + {{!log 'armor' this}} +
+ +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ + {{#if hasSpells}} +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{/if}} +
\ No newline at end of file diff --git a/.history/templates/character-weapons_20241208154137.hbs b/.history/templates/character-weapons_20241208154137.hbs new file mode 100644 index 0000000..b95211b --- /dev/null +++ b/.history/templates/character-weapons_20241208154137.hbs @@ -0,0 +1,71 @@ +
+ +
+ {{localize "LETHALFANTASY.Label.equipment"}}{{#if isEditMode}}{{/if}} +
+ {{#each weapons as |item|}} + {{!log 'weapon' this}} +
+ {{#if (ne item.img "icons/svg/item-bag.svg")}} + + {{/if}} +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+ +
+ {{#each armors as |item|}} + {{!log 'armor' this}} +
+ +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ + {{#if hasSpells}} +
+ {{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}{{/if}} +
+ {{#each spells as |item|}} + {{!log 'weapon' this}} +
+
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ {{/if}} +
\ No newline at end of file diff --git a/.history/templates/character-weapons_20241208154150.hbs b/.history/templates/character-weapons_20241208154150.hbs new file mode 100644 index 0000000..b97609b --- /dev/null +++ b/.history/templates/character-weapons_20241208154150.hbs @@ -0,0 +1,48 @@ +
+ +
+ {{localize "LETHALFANTASY.Label.equipment"}}{{#if isEditMode}}{{/if}} +
+ {{#each weapons as |item|}} + {{!log 'weapon' this}} +
+ {{#if (ne item.img "icons/svg/item-bag.svg")}} + + {{/if}} +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+ +
+ {{#each armors as |item|}} + {{!log 'armor' this}} +
+ +
+ {{item.name}} +
+
+ + +
+
+ {{/each}} +
+
+ + +
\ No newline at end of file diff --git a/.history/templates/equipment_20241130174329.hbs b/.history/templates/equipment_20241130174329.hbs new file mode 100644 index 0000000..7569353 --- /dev/null +++ b/.history/templates/equipment_20241130174329.hbs @@ -0,0 +1,14 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/equipment_20241210071700.hbs b/.history/templates/equipment_20241210071700.hbs new file mode 100644 index 0000000..ff5425f --- /dev/null +++ b/.history/templates/equipment_20241210071700.hbs @@ -0,0 +1,15 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.cost value=system.cost}} + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/equipment_20241210071704.hbs b/.history/templates/equipment_20241210071704.hbs new file mode 100644 index 0000000..162d1d6 --- /dev/null +++ b/.history/templates/equipment_20241210071704.hbs @@ -0,0 +1,15 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.encLoad value=system.cost}} + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/equipment_20241210071707.hbs b/.history/templates/equipment_20241210071707.hbs new file mode 100644 index 0000000..19923e3 --- /dev/null +++ b/.history/templates/equipment_20241210071707.hbs @@ -0,0 +1,15 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.encLoad value=system.encLoad}} + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/equipment_20241210072328.hbs b/.history/templates/equipment_20241210072328.hbs new file mode 100644 index 0000000..26aee37 --- /dev/null +++ b/.history/templates/equipment_20241210072328.hbs @@ -0,0 +1,15 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.encLoad value=system.encLoad}} + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151331.hbs b/.history/templates/miracle_20241209151331.hbs new file mode 100644 index 0000000..e69de29 diff --git a/.history/templates/miracle_20241209151334.hbs b/.history/templates/miracle_20241209151334.hbs new file mode 100644 index 0000000..c54149e --- /dev/null +++ b/.history/templates/miracle_20241209151334.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + {{formField systemFields.cost value=system.cost}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151340.hbs b/.history/templates/miracle_20241209151340.hbs new file mode 100644 index 0000000..b152775 --- /dev/null +++ b/.history/templates/miracle_20241209151340.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151341.hbs b/.history/templates/miracle_20241209151341.hbs new file mode 100644 index 0000000..b152775 --- /dev/null +++ b/.history/templates/miracle_20241209151341.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151342.hbs b/.history/templates/miracle_20241209151342.hbs new file mode 100644 index 0000000..95bfe8e --- /dev/null +++ b/.history/templates/miracle_20241209151342.hbs @@ -0,0 +1,28 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151345.hbs b/.history/templates/miracle_20241209151345.hbs new file mode 100644 index 0000000..fd407f8 --- /dev/null +++ b/.history/templates/miracle_20241209151345.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151351.hbs b/.history/templates/miracle_20241209151351.hbs new file mode 100644 index 0000000..ad18a7e --- /dev/null +++ b/.history/templates/miracle_20241209151351.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151352.hbs b/.history/templates/miracle_20241209151352.hbs new file mode 100644 index 0000000..6dd0487 --- /dev/null +++ b/.history/templates/miracle_20241209151352.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151353.hbs b/.history/templates/miracle_20241209151353.hbs new file mode 100644 index 0000000..3a0321f --- /dev/null +++ b/.history/templates/miracle_20241209151353.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151358.hbs b/.history/templates/miracle_20241209151358.hbs new file mode 100644 index 0000000..4ab13ee --- /dev/null +++ b/.history/templates/miracle_20241209151358.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.catalyst}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151359.hbs b/.history/templates/miracle_20241209151359.hbs new file mode 100644 index 0000000..04bb825 --- /dev/null +++ b/.history/templates/miracle_20241209151359.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151405.hbs b/.history/templates/miracle_20241209151405.hbs new file mode 100644 index 0000000..42dc0d6 --- /dev/null +++ b/.history/templates/miracle_20241209151405.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151406.hbs b/.history/templates/miracle_20241209151406.hbs new file mode 100644 index 0000000..42dc0d6 --- /dev/null +++ b/.history/templates/miracle_20241209151406.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151410.hbs b/.history/templates/miracle_20241209151410.hbs new file mode 100644 index 0000000..8983903 --- /dev/null +++ b/.history/templates/miracle_20241209151410.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151411.hbs b/.history/templates/miracle_20241209151411.hbs new file mode 100644 index 0000000..8983903 --- /dev/null +++ b/.history/templates/miracle_20241209151411.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151413.hbs b/.history/templates/miracle_20241209151413.hbs new file mode 100644 index 0000000..3b00d6d --- /dev/null +++ b/.history/templates/miracle_20241209151413.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151414.hbs b/.history/templates/miracle_20241209151414.hbs new file mode 100644 index 0000000..3b00d6d --- /dev/null +++ b/.history/templates/miracle_20241209151414.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209151416.hbs b/.history/templates/miracle_20241209151416.hbs new file mode 100644 index 0000000..3b00d6d --- /dev/null +++ b/.history/templates/miracle_20241209151416.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209231609.hbs b/.history/templates/miracle_20241209231609.hbs new file mode 100644 index 0000000..3b00d6d --- /dev/null +++ b/.history/templates/miracle_20241209231609.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209231704.hbs b/.history/templates/miracle_20241209231704.hbs new file mode 100644 index 0000000..3b00d6d --- /dev/null +++ b/.history/templates/miracle_20241209231704.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.castingTime}} + {{formField systemFields.miracleRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209231709.hbs b/.history/templates/miracle_20241209231709.hbs new file mode 100644 index 0000000..df2969f --- /dev/null +++ b/.history/templates/miracle_20241209231709.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.prayerTime}} + {{formField systemFields.miracleRange value=system.miracleRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241209231719.hbs b/.history/templates/miracle_20241209231719.hbs new file mode 100644 index 0000000..df2969f --- /dev/null +++ b/.history/templates/miracle_20241209231719.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.prayerTime}} + {{formField systemFields.miracleRange value=system.miracleRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/miracle_20241210072338.hbs b/.history/templates/miracle_20241210072338.hbs new file mode 100644 index 0000000..e2b5261 --- /dev/null +++ b/.history/templates/miracle_20241210072338.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} + {{formField systemFields.components.fields.catalyst value=system.components.catalyst}} + {{formField systemFields.components.fields.religious value=system.components.religious}} +
+ + {{formField systemFields.prayerTime value=system.prayerTime}} + {{formField systemFields.miracleRange value=system.miracleRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/shield_20241203131106.hbs b/.history/templates/shield_20241203131106.hbs new file mode 100644 index 0000000..c1062a3 --- /dev/null +++ b/.history/templates/shield_20241203131106.hbs @@ -0,0 +1,59 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/shield_20241210071717.hbs b/.history/templates/shield_20241210071717.hbs new file mode 100644 index 0000000..80f32f6 --- /dev/null +++ b/.history/templates/shield_20241210071717.hbs @@ -0,0 +1,59 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.v value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/shield_20241210071719.hbs b/.history/templates/shield_20241210071719.hbs new file mode 100644 index 0000000..20557de --- /dev/null +++ b/.history/templates/shield_20241210071719.hbs @@ -0,0 +1,59 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.encLoad value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/shield_20241210071720.hbs b/.history/templates/shield_20241210071720.hbs new file mode 100644 index 0000000..f682144 --- /dev/null +++ b/.history/templates/shield_20241210071720.hbs @@ -0,0 +1,59 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/shield_20241210072355.hbs b/.history/templates/shield_20241210072355.hbs new file mode 100644 index 0000000..eb9f066 --- /dev/null +++ b/.history/templates/shield_20241210072355.hbs @@ -0,0 +1,59 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/shield_20241210172525.hbs b/.history/templates/shield_20241210172525.hbs new file mode 100644 index 0000000..728c12b --- /dev/null +++ b/.history/templates/shield_20241210172525.hbs @@ -0,0 +1,61 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ {{formField systemFields.defense value=system.defense}} + {{formField systemFields.movementreduction value=system.movementreduction}} + + +
+ {{formField systemFields.standing.fields.min value=system.standing.min}} + {{formField systemFields.standing.fields.max value=system.standing.min}} +
+ + +
+ {{formField systemFields.crouching.fields.min value=system.crouching.min}} + {{formField systemFields.crouching.fields.max value=system.crouching.min}} +
+
+ +
+ +
+ {{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}} + {{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}} + {{formField systemFields.destruction.fields.piercing value=system.destruction.piercing}} +
+ + +
+ {{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}} + {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} + {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} +
+ + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} + +
+
+ + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled="false" + }} +
+
\ No newline at end of file diff --git a/.history/templates/skill_20241130132029.hbs b/.history/templates/skill_20241130132029.hbs new file mode 100644 index 0000000..fa9ba8e --- /dev/null +++ b/.history/templates/skill_20241130132029.hbs @@ -0,0 +1,21 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155751.hbs b/.history/templates/skill_20241208155751.hbs new file mode 100644 index 0000000..36dd0d9 --- /dev/null +++ b/.history/templates/skill_20241208155751.hbs @@ -0,0 +1,22 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155755.hbs b/.history/templates/skill_20241208155755.hbs new file mode 100644 index 0000000..0553512 --- /dev/null +++ b/.history/templates/skill_20241208155755.hbs @@ -0,0 +1,22 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if }} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155759.hbs b/.history/templates/skill_20241208155759.hbs new file mode 100644 index 0000000..036615f --- /dev/null +++ b/.history/templates/skill_20241208155759.hbs @@ -0,0 +1,28 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "skill")}} + {{formField systemFields.skillType value=system.skillType localize=true}} + {{formField systemFields.skillLevel value=system.skillLevel}} + {{formField systemFields.skillTotal value=system.skillTotal}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155807.hbs b/.history/templates/skill_20241208155807.hbs new file mode 100644 index 0000000..a6891e9 --- /dev/null +++ b/.history/templates/skill_20241208155807.hbs @@ -0,0 +1,28 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.skillType value=system.skillType localize=true}} + {{formField systemFields.skillLevel value=system.skillLevel}} + {{formField systemFields.skillTotal value=system.skillTotal}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155810.hbs b/.history/templates/skill_20241208155810.hbs new file mode 100644 index 0000000..74d2afc --- /dev/null +++ b/.history/templates/skill_20241208155810.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.skillType value=system.skillType localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155814.hbs b/.history/templates/skill_20241208155814.hbs new file mode 100644 index 0000000..89c4545 --- /dev/null +++ b/.history/templates/skill_20241208155814.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.skillType localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155819.hbs b/.history/templates/skill_20241208155819.hbs new file mode 100644 index 0000000..5caf242 --- /dev/null +++ b/.history/templates/skill_20241208155819.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155820.hbs b/.history/templates/skill_20241208155820.hbs new file mode 100644 index 0000000..5caf242 --- /dev/null +++ b/.history/templates/skill_20241208155820.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208155846.hbs b/.history/templates/skill_20241208155846.hbs new file mode 100644 index 0000000..5caf242 --- /dev/null +++ b/.history/templates/skill_20241208155846.hbs @@ -0,0 +1,26 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201615.hbs b/.history/templates/skill_20241208201615.hbs new file mode 100644 index 0000000..1545370 --- /dev/null +++ b/.history/templates/skill_20241208201615.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201626.hbs b/.history/templates/skill_20241208201626.hbs new file mode 100644 index 0000000..1cd83d5 --- /dev/null +++ b/.history/templates/skill_20241208201626.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weapon value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201631.hbs b/.history/templates/skill_20241208201631.hbs new file mode 100644 index 0000000..d570795 --- /dev/null +++ b/.history/templates/skill_20241208201631.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields. value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201649.hbs b/.history/templates/skill_20241208201649.hbs new file mode 100644 index 0000000..8d4fdfd --- /dev/null +++ b/.history/templates/skill_20241208201649.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponClass localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201659.hbs b/.history/templates/skill_20241208201659.hbs new file mode 100644 index 0000000..db5bd3a --- /dev/null +++ b/.history/templates/skill_20241208201659.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201704.hbs b/.history/templates/skill_20241208201704.hbs new file mode 100644 index 0000000..a10c4d1 --- /dev/null +++ b/.history/templates/skill_20241208201704.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack localize=true}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201705.hbs b/.history/templates/skill_20241208201705.hbs new file mode 100644 index 0000000..8e764bd --- /dev/null +++ b/.history/templates/skill_20241208201705.hbs @@ -0,0 +1,27 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201707.hbs b/.history/templates/skill_20241208201707.hbs new file mode 100644 index 0000000..aaedfe4 --- /dev/null +++ b/.history/templates/skill_20241208201707.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201711.hbs b/.history/templates/skill_20241208201711.hbs new file mode 100644 index 0000000..87532eb --- /dev/null +++ b/.history/templates/skill_20241208201711.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201713.hbs b/.history/templates/skill_20241208201713.hbs new file mode 100644 index 0000000..72cad4c --- /dev/null +++ b/.history/templates/skill_20241208201713.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201715.hbs b/.history/templates/skill_20241208201715.hbs new file mode 100644 index 0000000..78a1320 --- /dev/null +++ b/.history/templates/skill_20241208201715.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201717.hbs b/.history/templates/skill_20241208201717.hbs new file mode 100644 index 0000000..6b3f7aa --- /dev/null +++ b/.history/templates/skill_20241208201717.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208201718.hbs b/.history/templates/skill_20241208201718.hbs new file mode 100644 index 0000000..6b3f7aa --- /dev/null +++ b/.history/templates/skill_20241208201718.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208203751.hbs b/.history/templates/skill_20241208203751.hbs new file mode 100644 index 0000000..6b3f7aa --- /dev/null +++ b/.history/templates/skill_20241208203751.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204250.hbs b/.history/templates/skill_20241208204250.hbs new file mode 100644 index 0000000..edfa500 --- /dev/null +++ b/.history/templates/skill_20241208204250.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204253.hbs b/.history/templates/skill_20241208204253.hbs new file mode 100644 index 0000000..89a6cd5 --- /dev/null +++ b/.history/templates/skill_20241208204253.hbs @@ -0,0 +1,30 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} + + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204258.hbs b/.history/templates/skill_20241208204258.hbs new file mode 100644 index 0000000..7211944 --- /dev/null +++ b/.history/templates/skill_20241208204258.hbs @@ -0,0 +1,33 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponRange value=system.weaponRange}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204302.hbs b/.history/templates/skill_20241208204302.hbs new file mode 100644 index 0000000..bbfbaa6 --- /dev/null +++ b/.history/templates/skill_20241208204302.hbs @@ -0,0 +1,34 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponRange value=system.weaponRange}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204311.hbs b/.history/templates/skill_20241208204311.hbs new file mode 100644 index 0000000..3e4ded3 --- /dev/null +++ b/.history/templates/skill_20241208204311.hbs @@ -0,0 +1,34 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponRange value=system.weaponRange}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204312.hbs b/.history/templates/skill_20241208204312.hbs new file mode 100644 index 0000000..6740106 --- /dev/null +++ b/.history/templates/skill_20241208204312.hbs @@ -0,0 +1,34 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponRange value=system.weaponRange}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204314.hbs b/.history/templates/skill_20241208204314.hbs new file mode 100644 index 0000000..2b7bc51 --- /dev/null +++ b/.history/templates/skill_20241208204314.hbs @@ -0,0 +1,34 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : { + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponRange value=system.weaponRange}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204317.hbs b/.history/templates/skill_20241208204317.hbs new file mode 100644 index 0000000..251f5b6 --- /dev/null +++ b/.history/templates/skill_20241208204317.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{ }} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204318.hbs b/.history/templates/skill_20241208204318.hbs new file mode 100644 index 0000000..251f5b6 --- /dev/null +++ b/.history/templates/skill_20241208204318.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{ }} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204337.hbs b/.history/templates/skill_20241208204337.hbs new file mode 100644 index 0000000..9da8a83 --- /dev/null +++ b/.history/templates/skill_20241208204337.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{ availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204340.hbs b/.history/templates/skill_20241208204340.hbs new file mode 100644 index 0000000..242fc35 --- /dev/null +++ b/.history/templates/skill_20241208204340.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204448.hbs b/.history/templates/skill_20241208204448.hbs new file mode 100644 index 0000000..1ff5539 --- /dev/null +++ b/.history/templates/skill_20241208204448.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204601.hbs b/.history/templates/skill_20241208204601.hbs new file mode 100644 index 0000000..da6c974 --- /dev/null +++ b/.history/templates/skill_20241208204601.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204619.hbs b/.history/templates/skill_20241208204619.hbs new file mode 100644 index 0000000..19c3ba1 --- /dev/null +++ b/.history/templates/skill_20241208204619.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204621.hbs b/.history/templates/skill_20241208204621.hbs new file mode 100644 index 0000000..da6c974 --- /dev/null +++ b/.history/templates/skill_20241208204621.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204624.hbs b/.history/templates/skill_20241208204624.hbs new file mode 100644 index 0000000..ae9e658 --- /dev/null +++ b/.history/templates/skill_20241208204624.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204626.hbs b/.history/templates/skill_20241208204626.hbs new file mode 100644 index 0000000..fd4fd5c --- /dev/null +++ b/.history/templates/skill_20241208204626.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204629.hbs b/.history/templates/skill_20241208204629.hbs new file mode 100644 index 0000000..c6d8fdc --- /dev/null +++ b/.history/templates/skill_20241208204629.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204630.hbs b/.history/templates/skill_20241208204630.hbs new file mode 100644 index 0000000..387749e --- /dev/null +++ b/.history/templates/skill_20241208204630.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204631.hbs b/.history/templates/skill_20241208204631.hbs new file mode 100644 index 0000000..387749e --- /dev/null +++ b/.history/templates/skill_20241208204631.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208204634.hbs b/.history/templates/skill_20241208204634.hbs new file mode 100644 index 0000000..387749e --- /dev/null +++ b/.history/templates/skill_20241208204634.hbs @@ -0,0 +1,32 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208205643.hbs b/.history/templates/skill_20241208205643.hbs new file mode 100644 index 0000000..0630e9c --- /dev/null +++ b/.history/templates/skill_20241208205643.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241208205644.hbs b/.history/templates/skill_20241208205644.hbs new file mode 100644 index 0000000..0630e9c --- /dev/null +++ b/.history/templates/skill_20241208205644.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241210072108.hbs b/.history/templates/skill_20241210072108.hbs new file mode 100644 index 0000000..3779ec4 --- /dev/null +++ b/.history/templates/skill_20241210072108.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241210072122.hbs b/.history/templates/skill_20241210072122.hbs new file mode 100644 index 0000000..0630e9c --- /dev/null +++ b/.history/templates/skill_20241210072122.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241210072123.hbs b/.history/templates/skill_20241210072123.hbs new file mode 100644 index 0000000..0630e9c --- /dev/null +++ b/.history/templates/skill_20241210072123.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/skill_20241210072124.hbs b/.history/templates/skill_20241210072124.hbs new file mode 100644 index 0000000..0630e9c --- /dev/null +++ b/.history/templates/skill_20241210072124.hbs @@ -0,0 +1,31 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.category value=system.category localize=true}} + {{formField systemFields.base value=system.base}} + {{formField systemFields.bonus value=system.bonus}} + {{formField systemFields.cost value=system.cost}} + + {{#if (eq system.category "weapon")}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + Available Bonus : {{system.availableBonus}} + + {{formField systemFields.weaponBonus.fields.attack value=system.weaponBonus.attack}} + {{formField systemFields.weaponBonus.fields.defense value=system.weaponBonus.defense}} + {{formField systemFields.weaponBonus.fields.damage value=system.weaponBonus.damage}} + {{/if}} + +
+ {{localize "LETHALFANTASY.Label.total"}} + {{system.skillTotal}} +
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/spell_20241207223113.hbs b/.history/templates/spell_20241207223113.hbs new file mode 100644 index 0000000..c54149e --- /dev/null +++ b/.history/templates/spell_20241207223113.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + {{formField systemFields.cost value=system.cost}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/spell_20241210072359.hbs b/.history/templates/spell_20241210072359.hbs new file mode 100644 index 0000000..fa4bf8e --- /dev/null +++ b/.history/templates/spell_20241210072359.hbs @@ -0,0 +1,29 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ + {{formField systemFields.level value=system.level}} + {{formField systemFields.cost value=system.cost}} + + +
+ {{formField systemFields.components.fields.verbal value=system.components.verbal}} + {{formField systemFields.components.fields.somatic value=system.components.somatic}} + {{formField systemFields.components.fields.material value=system.components.material}} +
+ + {{formField systemFields.castingTime value=system.castingTime}} + {{formField systemFields.spellRange value=system.spellRange}} + {{formField systemFields.areaAffected value=system.areaAffected}} + {{formField systemFields.duration value=system.duration}} + {{formField systemFields.savingThrow value=system.savingThrow}} + {{formField systemFields.extraAetherPoints value=system.extraAetherPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/vulnerability_20241130173822.hbs b/.history/templates/vulnerability_20241130173822.hbs new file mode 100644 index 0000000..5a5ef93 --- /dev/null +++ b/.history/templates/vulnerability_20241130173822.hbs @@ -0,0 +1,13 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.cost value=system.cost}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=description value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/vulnerability_20241210072403.hbs b/.history/templates/vulnerability_20241210072403.hbs new file mode 100644 index 0000000..05d11bb --- /dev/null +++ b/.history/templates/vulnerability_20241210072403.hbs @@ -0,0 +1,13 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.cost value=system.cost}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/vulnerability_20241217070713.hbs b/.history/templates/vulnerability_20241217070713.hbs new file mode 100644 index 0000000..3880773 --- /dev/null +++ b/.history/templates/vulnerability_20241217070713.hbs @@ -0,0 +1,13 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.gainedPoints value=system.cost}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/vulnerability_20241217070715.hbs b/.history/templates/vulnerability_20241217070715.hbs new file mode 100644 index 0000000..22d5895 --- /dev/null +++ b/.history/templates/vulnerability_20241217070715.hbs @@ -0,0 +1,13 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ {{formField systemFields.gainedPoints value=system.gainedPoints}} + +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
+ +
\ No newline at end of file diff --git a/.history/templates/weapon_20241207222221.hbs b/.history/templates/weapon_20241207222221.hbs new file mode 100644 index 0000000..dcd4a7d --- /dev/null +++ b/.history/templates/weapon_20241207222221.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.standing.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.standing.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.standing.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154950.hbs b/.history/templates/weapon_20241208154950.hbs new file mode 100644 index 0000000..7c05944 --- /dev/null +++ b/.history/templates/weapon_20241208154950.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.standing.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.standing.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154951.hbs b/.history/templates/weapon_20241208154951.hbs new file mode 100644 index 0000000..af27042 --- /dev/null +++ b/.history/templates/weapon_20241208154951.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.v.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.standing.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154953.hbs b/.history/templates/weapon_20241208154953.hbs new file mode 100644 index 0000000..af27042 --- /dev/null +++ b/.history/templates/weapon_20241208154953.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.v.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.standing.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154957.hbs b/.history/templates/weapon_20241208154957.hbs new file mode 100644 index 0000000..2aa8499 --- /dev/null +++ b/.history/templates/weapon_20241208154957.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.standing.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154958.hbs b/.history/templates/weapon_20241208154958.hbs new file mode 100644 index 0000000..a258f74 --- /dev/null +++ b/.history/templates/weapon_20241208154958.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208154959.hbs b/.history/templates/weapon_20241208154959.hbs new file mode 100644 index 0000000..a258f74 --- /dev/null +++ b/.history/templates/weapon_20241208154959.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.standing.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155008.hbs b/.history/templates/weapon_20241208155008.hbs new file mode 100644 index 0000000..22c0ffd --- /dev/null +++ b/.history/templates/weapon_20241208155008.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.standing.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155009.hbs b/.history/templates/weapon_20241208155009.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155009.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155020.hbs b/.history/templates/weapon_20241208155020.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155020.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155035.hbs b/.history/templates/weapon_20241208155035.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155035.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155037.hbs b/.history/templates/weapon_20241208155037.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155037.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155038.hbs b/.history/templates/weapon_20241208155038.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155038.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155039.hbs b/.history/templates/weapon_20241208155039.hbs new file mode 100644 index 0000000..62d7b97 --- /dev/null +++ b/.history/templates/weapon_20241208155039.hbs @@ -0,0 +1,74 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155919.hbs b/.history/templates/weapon_20241208155919.hbs new file mode 100644 index 0000000..6bb41e2 --- /dev/null +++ b/.history/templates/weapon_20241208155919.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155923.hbs b/.history/templates/weapon_20241208155923.hbs new file mode 100644 index 0000000..bedef5e --- /dev/null +++ b/.history/templates/weapon_20241208155923.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155928.hbs b/.history/templates/weapon_20241208155928.hbs new file mode 100644 index 0000000..590997b --- /dev/null +++ b/.history/templates/weapon_20241208155928.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField }} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155937.hbs b/.history/templates/weapon_20241208155937.hbs new file mode 100644 index 0000000..585c7c2 --- /dev/null +++ b/.history/templates/weapon_20241208155937.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass }} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155941.hbs b/.history/templates/weapon_20241208155941.hbs new file mode 100644 index 0000000..c5527f9 --- /dev/null +++ b/.history/templates/weapon_20241208155941.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155951.hbs b/.history/templates/weapon_20241208155951.hbs new file mode 100644 index 0000000..fff4ba5 --- /dev/null +++ b/.history/templates/weapon_20241208155951.hbs @@ -0,0 +1,76 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155954.hbs b/.history/templates/weapon_20241208155954.hbs new file mode 100644 index 0000000..984b1c5 --- /dev/null +++ b/.history/templates/weapon_20241208155954.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241208155955.hbs b/.history/templates/weapon_20241208155955.hbs new file mode 100644 index 0000000..984b1c5 --- /dev/null +++ b/.history/templates/weapon_20241208155955.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.load value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241210071725.hbs b/.history/templates/weapon_20241210071725.hbs new file mode 100644 index 0000000..f14733b --- /dev/null +++ b/.history/templates/weapon_20241210071725.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.encLoad value=system.load}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241210071727.hbs b/.history/templates/weapon_20241210071727.hbs new file mode 100644 index 0000000..5a0c60d --- /dev/null +++ b/.history/templates/weapon_20241210071727.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=description + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241210072406.hbs b/.history/templates/weapon_20241210072406.hbs new file mode 100644 index 0000000..00347be --- /dev/null +++ b/.history/templates/weapon_20241210072406.hbs @@ -0,0 +1,75 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241210172530.hbs b/.history/templates/weapon_20241210172530.hbs new file mode 100644 index 0000000..ee3738d --- /dev/null +++ b/.history/templates/weapon_20241210172530.hbs @@ -0,0 +1,77 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241217070551.hbs b/.history/templates/weapon_20241217070551.hbs new file mode 100644 index 0000000..389b70c --- /dev/null +++ b/.history/templates/weapon_20241217070551.hbs @@ -0,0 +1,77 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.combatProgressionDice value=system.secondsToAttack}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/.history/templates/weapon_20241217070555.hbs b/.history/templates/weapon_20241217070555.hbs new file mode 100644 index 0000000..7a2e9c2 --- /dev/null +++ b/.history/templates/weapon_20241217070555.hbs @@ -0,0 +1,77 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+
+ + {{formField systemFields.weaponType value=system.weaponType localize=true}} + {{formField systemFields.weaponClass value=system.weaponClass localize=true}} + + +
+ {{formField systemFields.damageType.fields.typeP value=system.damageType.typeP}} + {{formField systemFields.damageType.fields.typeB value=system.damageType.typeB}} + {{formField systemFields.damageType.fields.typeS value=system.damageType.typeS}} +
+ + +
+ {{formField systemFields.damage.fields.damageS value=system.damage.damageS}} + {{formField systemFields.damage.fields.damageM value=system.damage.damageM}} +
+ + {{formField systemFields.hands value=system.hands localize=true}} + + {{#if (eq system.weaponType "melee")}} + {{formField systemFields.defenseMax value=system.defenseMax}} + {{formField systemFields.combatProgressionDice value=system.combatProgressionDice}} + {{/if}} + + {{#if (eq system.weaponType "ranged")}} + +
+ {{formField systemFields.speed.fields.simpleAim value=system.speed.simpleAim}} + {{formField systemFields.speed.fields.carefulAim value=system.speed.carefulAim}} + {{formField systemFields.speed.fields.focusedAim value=system.speed.focusedAim}} +
+ {{/if}} +
+
+ {{#if (eq system.weaponType "ranged")}} + + {{formField systemFields.defense value=system.defense}} + + +
+ {{formField systemFields.weaponRange.fields.pointBlank value=system.weaponRange.pointBlank}} + {{formField systemFields.weaponRange.fields.short value=system.weaponRange.short}} + {{formField systemFields.weaponRange.fields.medium value=system.weaponRange.medium}} + {{formField systemFields.weaponRange.fields.long value=system.weaponRange.long}} + {{formField systemFields.weaponRange.fields.extreme value=system.weaponRange.extreme}} + {{formField systemFields.weaponRange.fields.outOfSkill value=system.weaponRange.outOfSkill}} +
+ {{/if}} + + {{formField systemFields.equipped value=system.equipped}} + + {{formField systemFields.encLoad value=system.encLoad}} + + {{formField systemFields.cost value=system.cost}} + {{formField systemFields.money value=system.money localize=true}} +
+
+ +
+ {{localize "LETHALFANTASY.Label.description"}} + {{formInput + systemFields.description + enriched=enrichedDescription + value=system.description + name="system.description" + toggled=true + }} +
+
\ No newline at end of file diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index 8e67855..1c27c98 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -239,31 +239,92 @@ i.lethalfantasy { flex: none; width: 70px; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience { +.lethalfantasy .character-main .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; +} +.lethalfantasy .character-main .character-challenges .character-challenge { display: flex; align-items: center; - gap: 10px; - margin-left: 10px; + margin-right: 1rem; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input { +.lethalfantasy .character-main .character-challenges .character-challenge .rollable:hover, +.lethalfantasy .character-main .character-challenges .character-challenge .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; +} +.lethalfantasy .character-main .character-challenges .character-challenge .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; +} +.lethalfantasy .character-main .character-challenges .character-challenge .form-group { + flex: 1; + padding-left: 5px; +} +.lethalfantasy .character-main .character-challenges .character-challenge .form-group .form-fields { + flex: none; + width: 50px; +} +.lethalfantasy .character-main .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; +} +.lethalfantasy .character-main .character-movements .character-movement { display: flex; - width: 70px; - font-size: calc(var(--font-size-standard) * 1.4); align-items: center; - justify-content: center; - padding: 0 5px 0 5px; + margin-right: 1rem; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="number"] { - text-align: center; +.lethalfantasy .character-main .character-movements .character-movement .rollable:hover, +.lethalfantasy .character-main .character-movements .character-movement .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"] { - width: 20px; +.lethalfantasy .character-main .character-movements .character-movement .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"]:checked { - background-color: rgba(0, 0, 0, 0.1); +.lethalfantasy .character-main .character-movements .character-movement .form-group { + flex: 1; + padding-left: 5px; } -.lethalfantasy .character-main .character-characteristics .character-characteristic .experience input[type="checkbox"]:checked::after { - color: rgba(0, 0, 0, 0.1); +.lethalfantasy .character-main .character-movements .character-movement .form-group .form-fields { + flex: none; + width: 50px; +} +.lethalfantasy .character-main .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; +} +.lethalfantasy .character-main .character-saves .character-save { + display: flex; + align-items: center; + margin-right: 1rem; +} +.lethalfantasy .character-main .character-saves .character-save .rollable:hover, +.lethalfantasy .character-main .character-saves .character-save .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; +} +.lethalfantasy .character-main .character-saves .character-save .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; +} +.lethalfantasy .character-main .character-saves .character-save .form-group { + flex: 1; + padding-left: 5px; +} +.lethalfantasy .character-main .character-saves .character-save .form-group .form-fields { + flex: none; + width: 50px; } .lethalfantasy .character-main .character-characteristics-play { min-width: 225px; @@ -1044,83 +1105,6 @@ i.lethalfantasy { .lethalfantasy .vulnerability-content input[type="checkbox"]:checked::after { color: rgba(0, 0, 0, 0.1); } -.lethalfantasy .save-content { - font-family: var(--font-primary); - font-size: calc(var(--font-size-standard) * 1); - color: var(--color-dark-1); - background-image: var(--background-image-base); - background-repeat: no-repeat; - background-size: 100% 100%; -} -.lethalfantasy .save-content input:disabled, -.lethalfantasy .save-content select:disabled { - background-color: rgba(0, 0, 0, 0.2); - border-color: transparent; - color: var(--color-dark-3); -} -.lethalfantasy .save-content input, -.lethalfantasy .save-content select { - background-color: rgba(0, 0, 0, 0.1); - border-color: var(--color-dark-6); - color: var(--color-dark-2); -} -.lethalfantasy .save-content input[name="name"] { - height: 50px; - margin-right: 10px; - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); - font-weight: bold; - border: none; -} -.lethalfantasy .save-content fieldset { - margin-bottom: 5px; - border-radius: 5px; -} -.lethalfantasy .save-content .form-fields input, -.lethalfantasy .save-content .form-fields select { - text-align: center; - font-size: calc(var(--font-size-standard) * 1); -} -.lethalfantasy .save-content .form-fields select { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); -} -.lethalfantasy .save-content legend { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1.2); - font-weight: bold; - letter-spacing: 1px; -} -.lethalfantasy .save-content .form-fields { - padding-top: 5px; -} -.lethalfantasy .save-content label { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); - flex: 50%; -} -.lethalfantasy .save-content .align-top { - align-self: flex-start; - padding: 0.1rem; - margin-right: 0.2rem; - /*border-color: black; - border-width: 1px; - border-style: solid; - border-radius: 2%;*/ -} -.lethalfantasy .save-content .shift-right { - margin-left: 2rem; -} -.lethalfantasy .save-content .header { - display: flex; -} -.lethalfantasy .save-content .header img { - width: 50px; - height: 50px; -} -.lethalfantasy .save-content label { - flex: 10%; -} .lethalfantasy.fortune img { border: 0px; } diff --git a/fonts/caslonpro-bold.otf b/fonts/caslonpro-bold.otf deleted file mode 100644 index 809a29a..0000000 Binary files a/fonts/caslonpro-bold.otf and /dev/null differ diff --git a/fonts/caslonpro-bolditalic.otf b/fonts/caslonpro-bolditalic.otf deleted file mode 100644 index be185fd..0000000 Binary files a/fonts/caslonpro-bolditalic.otf and /dev/null differ diff --git a/fonts/caslonpro-italic.otf b/fonts/caslonpro-italic.otf deleted file mode 100644 index ef57f62..0000000 Binary files a/fonts/caslonpro-italic.otf and /dev/null differ diff --git a/fonts/caslonpro-regular.otf b/fonts/caslonpro-regular.otf deleted file mode 100644 index 15f0796..0000000 Binary files a/fonts/caslonpro-regular.otf and /dev/null differ diff --git a/fonts/catfranken-deutsch.ttf b/fonts/catfranken-deutsch.ttf deleted file mode 100644 index 05937f5..0000000 Binary files a/fonts/catfranken-deutsch.ttf and /dev/null differ diff --git a/lang/en.json b/lang/en.json index 3de42d3..ae3df0e 100644 --- a/lang/en.json +++ b/lang/en.json @@ -85,6 +85,14 @@ "label": "Appearance" } }, + "perception": { + "value": { + "label": "Perception" + }, + "bonus": { + "label": "Bonus" + } + }, "saves": { "will": { "label": "Will" @@ -207,6 +215,9 @@ "mace": "Mace" }, "FIELDS": { + "combatProgressionDice": { + "label": "Combat progression dice" + }, "equipped": { "label": "Equipped" }, @@ -438,6 +449,9 @@ "cost": { "label": "Cost" }, + "gainedPoints": { + "label": "Gained points" + }, "description": { "label": "Description" } @@ -461,6 +475,35 @@ "Platinums": "Platinum" }, "Label": { + "Movement": "Movement", + "movement": { + "walk": "Walk", + "run": "Run", + "sprint": "Sprint", + "jog": "Jog" + }, + "perception": "Perception", + "bonus": "Bonus", + "Saves": "Saves", + "grit": "Grit", + "gritEarned": "Grit earned", + "luck": "Luck", + "luckEarned": "Luck earned", + "saves": { + "will": "Will", + "dodge": "Dodge", + "toughness": "Toughness", + "contagion": "Contagion", + "poison": "Poison", + "pain": "Pain" + }, + "Challenges": "Challenges", + "challenges": { + "strength": "Strength", + "agility": "Agility", + "dying": "Dying" + }, + "HP": "HP", "characteristics": "Characteristics", "characteristic": "Characteristic", "description": "Description", diff --git a/module/config/system.mjs b/module/config/system.mjs index 6b38f2e..9ed5a0f 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -78,6 +78,7 @@ export const SYSTEM = { SPELL_RANGE: SPELL.RANGE, WEAPON_TYPE: WEAPON.WEAPON_TYPE, WEAPON_CLASS: WEAPON.WEAPON_CLASS, + COMBAT_PROGRESSION_DICE: WEAPON.COMBAT_PROGRESSION_DICE, MONEY, ASCII, ROLL_TYPE, diff --git a/module/config/weapon.mjs b/module/config/weapon.mjs index 553588a..0fc250f 100644 --- a/module/config/weapon.mjs +++ b/module/config/weapon.mjs @@ -4,6 +4,15 @@ export const WEAPON_TYPE = { "ranged": "LETHALFANTASY.Weapon.WeaponType.ranged" } +export const COMBAT_PROGRESSION_DICE = { + "d4": "d4", + "d6": "d6", + "d8": "d8", + "d10": "d10", + "d12": "d12", + "d20": "d20" +} + export const WEAPON_CLASS = { "longblade": "LETHALFANTASY.Weapon.WeaponClass.longblade", "shortblade": "LETHALFANTASY.Weapon.WeaponClass.shortblade", diff --git a/module/documents/item.mjs b/module/documents/item.mjs index 4e0151e..6e1bceb 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -4,7 +4,7 @@ export const defaultItemImg = { equipment: "systems/fvtt-lethal-fantasy/assets/icons/icon_equipment.webp", skill: "systems/fvtt-lethal-fantasy/assets/icons/icon_skill.webp", gift: "systems/fvtt-lethal-fantasy/assets/icons/icon_gift.webp", - invulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_invulnerability.webp", + vulnerability: "systems/fvtt-lethal-fantasy/assets/icons/icon_vulnerability.webp", shield: "systems/fvtt-lethal-fantasy/assets/icons/icon_shield.webp", spell: "systems/fvtt-lethal-fantasy/assets/icons/icon_spell.webp", miracle: "systems/fvtt-lethal-fantasy/assets/icons/icon_miracle.webp" diff --git a/module/models/vulnerability.mjs b/module/models/vulnerability.mjs index 4c11057..3ad6a04 100644 --- a/module/models/vulnerability.mjs +++ b/module/models/vulnerability.mjs @@ -6,6 +6,7 @@ export default class LethalFantasyVulnerability extends foundry.abstract.TypeDat schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.gainedPoints = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) return schema } diff --git a/module/models/weapon.mjs b/module/models/weapon.mjs index 0d62c31..fa8483d 100644 --- a/module/models/weapon.mjs +++ b/module/models/weapon.mjs @@ -19,10 +19,11 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { damageS: new fields.StringField({required: true, initial: ""}), damageM: new fields.StringField({required: true, initial: ""}) }) - schema.hands = new fields.StringField({ required: true, initial: "1", choices: ["1", "2"] }) + schema.hands = new fields.StringField({ required: true, initial: "1", choices: {"1": "1", "2": "2"} }) schema.defenseMax = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.secondsToAttack = new fields.StringField({required: true, initial: ""}) + schema.combatProgressionDice = new fields.StringField({required: true, initial: "d4", choices: SYSTEM.COMBAT_PROGRESSION_DICE}) schema.speed = new fields.SchemaField({ simpleAim: new fields.StringField({required: true, initial: ""}), diff --git a/styles/character.less b/styles/character.less index c16d357..a60bdf3 100644 --- a/styles/character.less +++ b/styles/character.less @@ -128,30 +128,96 @@ width: 70px; } } - .experience { - display: flex; - align-items: center; - gap: 10px; - margin-left: 10px; - input { - display: flex; - width: 70px; - font-size: calc(var(--font-size-standard) * 1.4); - align-items: center; - justify-content: center; - padding: 0 5px 0 5px; + } + } + .character-challenges { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-challenge { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; } - input[type="number"] { - text-align: center; + } + } + } + + .character-movements { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-movement { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; } - input[type="checkbox"] { - width: 20px; - } - input[type="checkbox"]:checked { - background-color: rgba(0, 0, 0, 0.1); - } - input[type="checkbox"]:checked::after { - color: rgba(0, 0, 0, 0.1); + } + } + } + + .character-saves { + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; + + .character-save { + display: flex; + align-items: center; + margin-right: 1rem; + .rollable:hover, + .rollable:focus { + text-shadow: 0 0 8px var(--color-shadow-primary); + cursor: pointer; + } + .name { + flex: 1; + min-width: 3rem; + margin-left: 0.5rem; + } + .form-group { + flex: 1; + padding-left: 5px; + .form-fields { + flex: none; + width: 50px; } } } diff --git a/system.json b/system.json index b55ae92..7b14e91 100644 --- a/system.json +++ b/system.json @@ -6,7 +6,7 @@ "download": "#{DOWNLOAD}#", "url": "#{URL}#", "license": "LICENSE", - "version": "12.0.3", + "version": "12.0.4", "authors": [ { "name": "Uberwald", diff --git a/templates/character-main.hbs b/templates/character-main.hbs index d687544..0d87491 100644 --- a/templates/character-main.hbs +++ b/templates/character-main.hbs @@ -9,11 +9,34 @@ -
- {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} -  /  - {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} -
+ +
+
+ {{localize "LETHALFANTASY.Label.HP"}} + {{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp"}} +  /  + {{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.perception"}} + {{formInput systemFields.perception.fields.value value=system.perception.value disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.bonus"}} + {{formInput systemFields.perception.fields.bonus value=system.perception.bonus disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.grit"}} + {{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.gritEarned"}} + {{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode classes="character-hp"}} +
+
+ {{localize "LETHALFANTASY.Label.luck"}} + {{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode classes="character-hp"}} + {{localize "LETHALFANTASY.Label.luckEarned"}} + {{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode classes="character-hp"}} +
+
+
@@ -23,8 +46,68 @@
-
-
+ +
+ {{localize "LETHALFANTASY.Label.Saves"}} +
+
+ {{localize "LETHALFANTASY.Label.saves.will"}} + {{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=isPlayMode + classes="rollable" data-save-id="will" }} + {{localize "LETHALFANTASY.Label.saves.dodge"}} + {{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value disabled=isPlayMode + classes="rollable" data-save-id="dodge" }} + {{localize "LETHALFANTASY.Label.saves.toughness"}} + {{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value + disabled=isPlayMode classes="rollable" data-save-id="toughness" }} +
+
+ {{localize "LETHALFANTASY.Label.saves.contagion"}} + {{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value + disabled=isPlayMode classes="rollable" data-save-id="contagion" }} + {{localize "LETHALFANTASY.Label.saves.poison"}} + {{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value + disabled=isPlayMode classes="rollable" data-save-id="poison" }} + {{localize "LETHALFANTASY.Label.saves.pain"}} + {{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=isPlayMode + classes="rollable" data-save-id="pain" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Challenges"}} +
+
+ {{localize "LETHALFANTASY.Label.challenges.strength"}} + {{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value disabled=isPlayMode + classes="rollable" data-challenge-id="str" }} + {{localize "LETHALFANTASY.Label.challenges.agility"}} + {{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value disabled=isPlayMode + classes="rollable" data-challenge-id="agility" }} + {{localize "LETHALFANTASY.Label.challenges.dying"}} + {{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value + disabled=isPlayMode classes="rollable" data-challenge-id="dying" }} +
+
+
+ +
+ {{localize "LETHALFANTASY.Label.Movement"}} +
+
+ {{localize "LETHALFANTASY.Label.movement.walk"}} + {{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.jog"}} + {{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.sprint"}} + {{formField systemFields.movement.fields.sprint value=system.movement.sprint disabled=isPlayMode}} + {{localize "LETHALFANTASY.Label.movement.run"}} + {{formField systemFields.movement.fields.run value=system.movement.run disabled=isPlayMode}} +
+
+
+
@@ -32,18 +115,17 @@
{{localize "LETHALFANTASY.Label.characteristics"}}
- {{localize "LETHALFANTASY.Label.str"}} - {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value - disabled=isPlayMode classes="rollable" data-char-id="str" }} - - {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent - disabled=isPlayMode }} + {{localize "LETHALFANTASY.Label.str"}} + {{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value + disabled=isPlayMode classes="rollable" data-char-id="str" }} + {{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent + disabled=isPlayMode }}
{{localize "LETHALFANTASY.Label.int"}} {{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value disabled=isPlayMode classes="rollable" data-char-id="int" }} - + {{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent disabled=isPlayMode }}
@@ -51,7 +133,7 @@ {{localize "LETHALFANTASY.Label.wis"}} {{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value disabled=isPlayMode classes="rollable" data-char-id="wis" }} - + {{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent disabled=isPlayMode }} @@ -59,7 +141,7 @@ {{localize "LETHALFANTASY.Label.dex"}} {{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value disabled=isPlayMode classes="rollable" data-char-id="wis" }} - + {{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent disabled=isPlayMode }} @@ -67,7 +149,7 @@ {{localize "LETHALFANTASY.Label.con"}} {{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value disabled=isPlayMode classes="rollable" data-char-id="con" }} - + {{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent disabled=isPlayMode }} @@ -75,7 +157,7 @@ {{localize "LETHALFANTASY.Label.cha"}} {{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value disabled=isPlayMode classes="rollable" data-char-id="cha" }} - + {{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent disabled=isPlayMode }} @@ -83,7 +165,7 @@ {{localize "LETHALFANTASY.Label.luc"}} {{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value disabled=isPlayMode classes="rollable" data-char-id="luc" }} - + {{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent disabled=isPlayMode }} @@ -91,7 +173,7 @@ {{localize "LETHALFANTASY.Label.app"}} {{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value disabled=isPlayMode classes="rollable" data-char-id="app" }} - + {{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent disabled=isPlayMode }} diff --git a/templates/vulnerability.hbs b/templates/vulnerability.hbs index 05d11bb..22d5895 100644 --- a/templates/vulnerability.hbs +++ b/templates/vulnerability.hbs @@ -3,7 +3,7 @@ {{formInput fields.name value=source.name}} - {{formField systemFields.cost value=system.cost}} + {{formField systemFields.gainedPoints value=system.gainedPoints}}
{{localize "LETHALFANTASY.Label.description"}} diff --git a/templates/weapon.hbs b/templates/weapon.hbs index ee3738d..7a2e9c2 100644 --- a/templates/weapon.hbs +++ b/templates/weapon.hbs @@ -27,7 +27,7 @@ {{#if (eq system.weaponType "melee")}} {{formField systemFields.defenseMax value=system.defenseMax}} - {{formField systemFields.secondsToAttack value=system.secondsToAttack}} + {{formField systemFields.combatProgressionDice value=system.combatProgressionDice}} {{/if}} {{#if (eq system.weaponType "ranged")}}